金曜日, 8月 29, 2008

[Scala] Luceneのハイライタ(NGramTokenizer)

NGramTokenizerをScalaでやってみました。

import org.apache.lucene.analysis.Analyzer;

import org.apache.lucene.analysis.ngram.NGramTokenizer;

import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.Scorer;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.TextFragment;

import java.io.Reader;

object HighlightRunner {
val CONTENT = "東京特許許可局";
val QUERY_STRING = "許可";
val F = "f";
var analyzer: Analyzer = new NGramAnalyzer(1,3);

def main(args: Array[String]) {
try{
var qp :QueryParser = new QueryParser( F, analyzer );
var query :Query = qp.parse( QUERY_STRING );
var scorer :Scorer = new QueryScorer( query, F );
var h :Highlighter = new Highlighter( scorer );
println( h.getBestFragment( analyzer, F, CONTENT ) );
} catch {
case e:StringIndexOutOfBoundsException => ()
case e:Exception => {
e.printStackTrace
}
} finally {
// println("FINALLY");
}
}
}

// http://blog.goo.ne.jp/13th-floor/e/f694fdb1319134b40e4dee5ed8c15a92
class NGramAnalyzer(minGram:Int, maxGram:Int) extends Analyzer {
def tokenStream(fieldName:java.lang.String, reader:java.io.Reader): org.apache.lucene.analysis.TokenStream =
new NGramTokenizer(reader, minGram, maxGram);
}

木曜日, 8月 28, 2008

[Scala] Luceneのハイライタ(N-gram×)

全文検索エンジンLuceneの実験。
公開されていた例(≒N-gramでHighlighterがうまく動かない)をScalaでリライトしてみた。
- - - -
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.Scorer;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.TextFragment;

object HighlightRunner {
val CONTENT = "ひふみひふみひふみひふみひひふひふみろひふみろ";
val QUERY_STRING = "ひふみひふみ";
val F = "f";
var analyzer : Analyzer = new CJKAnalyzer();
def main(args: Array[String]) {
try{
var qp :QueryParser = new QueryParser( F, analyzer );
var query :Query = qp.parse( QUERY_STRING );
var scorer :Scorer = new QueryScorer( query, F );
var h :Highlighter = new Highlighter( scorer );
println( h.getBestFragment( analyzer, F,  CONTENT ) );
} catch {
case e:StringIndexOutOfBoundsException => ()
case e:Exception => {
e.printStackTrace
}
} finally {
}
}
}

木曜日, 8月 21, 2008

[linux] memcachedをsnmpで

AgentXというプロトコルを使うと、既存のsnmpdにアドオンで監視/モニタ対象を増やすことが出来ます。
この方向で、memcachedもAgentXをしゃべられるようにしよう、というpatchがありました。

運用観点でも進歩してくると、ありがたいです。

火曜日, 8月 12, 2008

[linux] DTrace

OpenSolarisで話題のDTrace(PostgreSQLでもサポート)は、いまやLinuxでも使えるんですね(DTrace for Linux)。memcachedもv1.2.6からサポートと書いてあることですし、ぜひ使ってみたいものです。

土曜日, 8月 09, 2008

[Linux] jmxproxy

Javaアプリの性能は、JMXに乗っているならZAPCATZABBIXからモニタリングが可能となりました。ですが、これを自前監視ツール(例/Cacti)などから見るときはどうしたらよいのか、と思っていたら、意外にTomcatそのものに、jmxproxyなんてものが入っていたのですね。
http://snbhsmt.blog110.fc2.com/blog-entry-74.html

snbhsmt_logさんの例 via kwout


これなら、スクリプトでパースするのも簡単そうです。

水曜日, 7月 16, 2008

[Linux] zapcat

Tomcatの監視/モニタリングはどうやるべきか。JVMは昨今snmpをしゃべるので楽だか、Tomcatの中(HTTPコネクタで受けたリクエスト数など)が見られなく困っていたら、ZABBIX(という監視ツール)向けにこれをうまく取得できるサーブレットがあることが分かった。それがzapcat
http://www.kjkoster.org/zapcat/Zapcat_JMX_Zabbix_Bridge.html

via kwout

これを使うと、JMXで取ったデータをZABBIXサーバからのアクセスで見られる様子。JMXは規格としてはとても面白いものだが、いかんせんインフラ屋さんにはあまりにとっつきにくいのが難点だと思う。

火曜日, 7月 08, 2008

[Linux] loadが真夜中に急上昇?

真夜中にレンタルサーバのloadAverageが急上昇し、たまにnamedが落ちるような現象に苛まれていた(1:04に発症)。ZABBIXの監視で見ていても、監視がへんになっていたりする。

これ、logrotateが原因なんですね。普通にVPSじゃないサーバのときには気が付かなかったのですが。。。で良い逃げ策も思いつかなかったのですが、ローテート対象を以下で"100k以上溜まったログ"としてみました(logrotated.confに記述)。
size=100k

これで様子をみようと思います。

木曜日, 7月 03, 2008

[Linux] pg_osmem.py

以前fincoreを使うと、特定のファイルデータがOSキャッシュ上にどれくらい載っているかが調べられることをメモしたが、以下pg_osmem.pyというコマンドが投稿されていた。
http://www.kennygorman.com/wordpress/?p=250

via kwout

出力例などが見られないのでなんともですが(ちなみに、これで使われているpsycopg2というDBコネクタも性能がよいものであるとのことです)。

月曜日, 6月 30, 2008

[Linux] MPXJ

MSプロジェクトのファイルをJavaから直接操作できるライブラリを発見。日本語もいけるんでしょうか。
http://mpxj.sourceforge.net/

via kwout

木曜日, 6月 26, 2008

[Perl] 野良ppmの探し方

tcoolというサイトがあり、Seleniumのパッケージはありました。

月曜日, 6月 16, 2008

[Linux] unfuffle

unfuddleという無料のSVNリポジトリを初めて使ってみた。ただリポジトリを無料でインターネットに公開しただけじゃなく、UIとしてとても優れいていて使いやすそう。
http://unfuddle.com/

via kwout

普通のSVNなんだけど、以下コマンドラインでの使い方。
[f0054@divers-high ~]$ svn checkout http://tf0054.unfuddle.com/svn/tf0054_mm/
認証領域: <http://tf0054.unfuddle.com:80> Unfuddle Subversion Repository
'tf0054' のパスワード:
リビジョン 0 をチェックアウトしました。
[tf0054@divers-high ~]$ cd tf0054_mm/
[tf0054@divers-high tf0054_mm]$ ls -la
合計 24
drwxrwxr-x  3 tf0054 tf0054  4096  6月 16 01:50 .
drwxr-xr-x 28 tf0054 tf0054 16384  6月 16 01:50 ..
drwxrwxr-x  6 tf0054 tf0054  4096  6月 16 01:50 .svn
[tf0054@divers-high tf0054_mm]$ cp -pir ~/btmail/post_bgnote.pl ./
[tf0054@divers-high tf0054_mm]$ ls -la
合計 28
drwxrwxr-x  3 tf0054 tf0054  4096  6月 16 01:50 .
drwxr-xr-x 28 tf0054 tf0054 16384  6月 16 01:50 ..
drwxrwxr-x  6 tf0054 tf0054  4096  6月 16 01:50 .svn
-rwxr-xr-x  1 tf0054 tf0054  3237  6月 16 01:23 post_bgnote.pl
[tf0054@divers-high tf0054_mm]$ svn add post_bgnote.pl
A         post_bgnote.pl
[tf0054@divers-high tf0054_mm]$ svn commit -m 'First Add'
[tf0054@divers-high tf0054_mm]$ 

ちなみに、UTF8で入れるときちんと日本語のコメントも入りました。

土曜日, 6月 14, 2008

[Linux] 添付可能なメール送信"コマンド"

ファイル添付が可能なメール送信コマンド"email"(そのままですが)。
監視メールや集計結果メールなど、メール添付でメーラに結果がくればうれしいのに、でもそのためにPerlでプログラム書くのもなぁ、と思ったことは片手に収まらないハズ。
http://www.cleancode.org/projects/email

via kwout

電子署名とかいりませんが、本当にこういうのが「カユいところに」だと感じます。

木曜日, 6月 05, 2008

[Linux] PostgreSQL+LVM

LVMを使ってPostgreSQLのデータベースデータをバックアップするスクリプト。MySQLのがベースだそうですが、確かにそろそろ安定性から考えても実用に耐えうる状態になっていそうな(検証する価値がありそうな)気がします。
http://people.planetpostgresql.org/xzilla/index.php?/archives/344-guid.html

via kwout

月曜日, 5月 26, 2008

[Linux] Selenium GRID example

Selenium GRIDのexampleを動かしてみた。
D:\selenium-grid-1.0\examples\java>ant run-in-sequence

これでexamples\java\src\com\thoughtworks\selenium\grid\examples\java以下のファイルをいぢれば、やりたいテストができる、、のかな。

あと、、Proxyを通してテストをさせる(RCさんの上位にProxyを置く)にはどうするのだろう。setproxyタスク(?)でもうまく行かないし。。

<target ... >
<setproxy proxyhost="xxx.digipepper.com" proxyport="8080"/>

日曜日, 5月 25, 2008

[Linux] Selenium HTMLSuite

テスト自体はテストケースと呼ばれ、作ったいくつかのテストケースをまとめて実行させるため、それらのリンクを書いたやつのことをテストスイートというらしい。
その後者、スイートを自動生成したり、ブラウザを使い分けて実行したりすることができるJavaライブラリとしてのエクステンションがあったのでメモ。
clipped from www.enjoyxstudy.com

Selenium Remote Control(以降Selenium RC)におけるHTMLSuite(HTML形式で記述したテストスイート)の実行を、より手軽に、より便利にするためのライブラリです。

 blog it

[Linux] Selenium GRID

自動運転のピアノなごとく、ブラウザを操作して各種テストを行うSeluniumですが、複数のブラウザを同時に操作してテスト、するにはこのミドルでやるそうです。
 blog it
で、ちょっとやってみたとき、先に入れていたFirefox3(RC1)をうまく操作してくれなかった。。でIEを使うようにしたら無事動いた(と思う)。変更はbuild.xmlに以下。
D:\selenium-grid-1.0>diff build.xml.f build.xml
10c10
<   <property name="browser" value="*chrome" />
---
>   <property name="browser" value="*iehta" />
75c75
<   <property name="environment" value="*chrome"/>
---
>   <property name="environment" value="*iehta"/>

D:\selenium-grid-1.0>
昨今AJAXなサイトが増えてきており、、、JMeterでは少しつらくなってきた気がしています。無論がんばってシナリオを作ればよいのですが。

土曜日, 5月 24, 2008

[Flash] APE

Flashの物理エンジンというものがあるらしい。Flashコンテンツって自然界の動きをシミュレートしてみせることでかっこよくなるのだと思うので、その意味ではこんなのが大事なのだろうと思う。
clipped from www.cove.org
 blog it

月曜日, 5月 19, 2008

[linux] Paros

ParosというProxy型ウェブサイト脆弱性調査アプリ。多少日本語情報もあるので後で見てみたい。
http://www.parosproxy.org/index.shtml

via kwout

水曜日, 5月 14, 2008

[Life] wgetをproxy経由で

Windowsでwgetを使うとき、PROXY指定をしたかったら以下のように。
set http_proxy=squid.xxx.com:8080

意外にすぐわからなくなるのでメモ。

土曜日, 5月 10, 2008

[Life] DISQUS

ブログのコメント管理だけを切り出したサービス。コメントされたらメールがきて、それに返信したらスレッドに追記されるとか。。。
clipped from disqus.com
disqus_logo.png
 blog it
日本語コメントはきちんと見えることを確認!
が、(やはりといえばそうだが)返信は日本語が通りませんでした。。
プロジェクト管理で使っているMantisもそうなのですが、メールでコメントを返信できるととっても便利なので、、とても惜しい!です。