月曜日, 12月 29, 2008

[Solr] 日本語解析には

cmecab-java、本当はMeCabをJavaから使うためのバインディング(本家のmecab-javaをSWIG使わず実装したもの)なのだけど、中にSolr用のファクトリクラスが含まれていることに注目すべし。
http://code.google.com/p/cmecab-java/

via kwout

Java記述がv1.6系向けで、まだv1.5系の場合は少し書き換えが必要になる(MecabExceptionで2つメソッドを消した/string型のisEmptyをnull比較に変更)のですが、なんとか無事Solr(v1.3)から使えるようになりました。

あ、あとMacでコンパイルする場合、Makefileが合わないのでシアノさんのページを見ながら書き換えること、また、標準Javaのエンコード指定が何故かSJISなので、"-D file.encoding=UTF-8"とする必要があります。

参考:ハタさんのブログ

日曜日, 12月 21, 2008

[life] ソースをハイライト

ブログにソースを張るときに。
http://uwanosora.xrea.jp/2008/06/web.html

via kwout

金曜日, 12月 19, 2008

[Solr] SpellCheckComponent

Solrには「もしかして検索」を実装するのに使えそうなSpellCheckComponentというコンポーネントがあるが、日本語は何故か使えない様子(出所はIBMの開発者向けページ/いつも質が高く関心する)。
Lukeで見るところ、SpellCheck用フィールドのトークナイザをMeCabにしているから、当然キチンとword及びstart3なんかにも、想定した切り方で入っているようだが。。
問題はクエリ側か?

参考:LingPipe, Wiki

日曜日, 12月 14, 2008

[Life] userchrome.jsの練習で

すばらしい先達。これから(も)勉強できそう。
clipped from www.code-404.net
Copy URL Lite+
 blog it

水曜日, 12月 03, 2008

[Life] XULの情報元!

Firefoxの拡張(userChromeのだけど)を改訂したくて、XULのチュートリアルを探していた。しかしそもそもマニアックなので書籍など期待できないな、と思っていたら、、、なんとウェブ上にとてもしっかりとした情報が公開されていました。
http://piro.sakura.ne.jp/xul/doc/tutorial/

via kwout

本当に、こういう活動には頭が下がります(しかし、本家のチュートリアルも日本語で充実してました。もう実は至れり尽くせり!?)。
あれ?でもFirefox2と3で少しは違うのかな。

火曜日, 12月 02, 2008

[S3] junglediskの次

CUIのツールを探していて、s3cmdが便利そう。pythonで書かれている。
http://s3tools.logix.cz/s3cmd

via kwout

"--configure"で設定ファイルを書くウイザードになる親切設計。

月曜日, 12月 01, 2008

[Linux] apacheの内部構造

1999年当時のものと古いですが、apacheの内部構造が説明された論文(?)を見つけました。
https://styx.uwaterloo.ca/~oadragoi/cw/CS746G/a2/acc.html

via kwout

日曜日, 11月 30, 2008

[PgSQL] セッションの切断方法

PostgreSQLは、DBサーバとしてクライアントのセッションについてタイムアウトをかけない。このため、さすがにちょっとセッションが多すぎるな、とDBAが思ったとして、今度はセッションを切断する方法がよくわからない。。
と思ったら、管理者向け関数の中にあるpg_cancel_backend(pid int)というやつが役に立つようだ。これをpsqlからざくっと発行すれば、セッションは殺せるらしい(PostgisのMLより)。

SELECT pg_cancel_backend(5220);


なるほどね。

水曜日, 11月 26, 2008

[Solr] jQueryのSolrプラグイン

すばらしい!

月曜日, 11月 24, 2008

[Java] 性能試験のときなどに

Javaアプリは、性能に関係するパラメータが多すぎてよくわからない。なので試験時に如何にうまく、多くの情報を得て分析できるかが肝要だと思います。
これまで、JVMの情報をSNMPで取れることは知っていて、これを細々とZABBIXでグラフ化したり、少し前からzapcatを知ったのでそれを用いてTomcatのスレッド挙動を見たりしていました。
そして今日、今更ながらzapcatのzipファイルの中に「Javaテンプレート」が入っていることを発見しました。これは偶然、ファイルディスクリプタの消費って取れないのかな?と調べていた中で見つけました。
早速入れてみたのですが、なんかいっぱい取れすぎて、、でもこういう、先人の知恵(?)から学ぶことは大きいので、ちょっとづつ内容を確認してゆこうと思います。

でも、、灯台元暗しというか。。

木曜日, 11月 20, 2008

[Life] userChrome

httpヘッダに入ってくるデバッグ用の拡張httpヘッダを探すのに疲れたので、、LiveHeadersなんかを使わず画面上にそれとなく、そのデバック情報を表示してくれるような機能を、(今更ながら)Firefoxの拡張として、userChromeを使って書いてみた。画面上はで想定する動きになったので、次はステータスバーかメニューにoff/onスイッチを付けたい。

そもそもJavascriptが苦手ですが、意外に書けるもので、調子にのってこの苦手も克服できるよう、Javascriptの開発環境を整備してみようか、と考えています。

今回はuserChromeを使ってみたのですが、それより前からある(?)JavascriptActionsというやつと、どっちがどう(良い)のか。知りたいです。

火曜日, 11月 18, 2008

[Life] MS-Accessの調査で

MS-Accessから、クエリ名とSQLの一覧を取得するVBAスクリプト(Cドライブ直下にlog.txtという名前でファイルアウトします)。

Option Compare Database

Public Sub MyQueryName()

On Error GoTo エラー

    Dim Cat As ADOX.Catalog
    Dim viw As ADOX.View
    Dim pcd As ADOX.Procedure
    Dim strmsg As String
    
    ' ファイルハンドルオープン
    Open "C:\log.txt" For Output As #1

    Set Cat = New ADOX.Catalog
    Cat.ActiveConnection = CurrentProject.Connection 'カレントデータベースに接続
    
    For Each viw In Cat.Views ' --- A
        strmsg = strmsg & vbNewLine & "[v] " & viw.Name & "^" & viw.Command.CommandText
    Next viw
    
    For Each pcd In Cat.Procedures ' --- B
        If Left(pcd.Name, 1) <> "~" Then ' --- C
            strmsg = strmsg & vbNewLine & "[p] " & pcd.Name & "^" & pcd.Command.CommandText
        End If
    Next pcd
    
    Print #1, strmsg
    ' ファイルハンドルクローズ
    Close #1
    
    MsgBox "end."
    Set Cat = Nothing
    
    Exit Sub
    
エラー:
    
    MsgBox Err.Number & vbNewLine & Err.Description, vbCritical
    Exit Sub

End Sub

土曜日, 11月 15, 2008

[Solr] Normとは

Normとはノルムと読み、(Luceneや)Solrでは、検索対象文章の重要度(例/一覧表示するときなど)を決める要素のこと。

たとえばLength-Nornとは「各単語が含まれている文章が長い場合と、短い文章である場合は、後者のほうが(その単語が)、当該文章において重要である(≒その文章の特徴をあらわすものである可能性が高い)」ということを表現する情報のこと。

これ以外に、各文書や(その中の)フィールドがそれぞれ指定されうるブースト値も、この中に含まれます。

なお、よく混同される単語にNormalize(ノーマライズ/Normってこの略かと思いがち)があり、これは広くは正規化処理のことで、こと検索エンジンの世界(?)では、文章を格納するとき(後で使いやすいよう)、半角カナ→全角カナ、だったり、全角アルファベットを半角のそれに統一する処理をいいます。

。。。と調べようと思っていたら、Luceneのスコアリング解析というドンピシャなまとまったpdfが公開されていた。

木曜日, 11月 13, 2008

[Life] scala入門

IBMのページ以外あまり見当たらなかった資金投入された(?)Scalaのページが、日経にもありました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080613/308019/?ST=develop

via kwout

しかも、結構前からの連載ものです。

日曜日, 11月 02, 2008

[Solr] ロールバック機能!

商用の検索エンジンでもあまり使えない、rollback機能が本家にコミットされました。
論理障害、物理障害を考えるとき、この機能追加はきわめて意味深いと思われます!

木曜日, 10月 30, 2008

[Linux] ReriteRule

いまさらですが、apacheでRewriteしたい+ネームバーチャルを使っている場合、各<VirtualHost>ディレクティブの中で、"ReriteEngine On"ってやらないといけないんですね。。
知りませんでした!

日曜日, 10月 26, 2008

[Linux] lshell

共有環境などでよくあることとして、シェルアクセスを一部許したい、ということがあるが、なかなかうまく設定できるものが少ない(rbashとか標準でついているので便利ではありますが)。このとき、lshellというのがよさそう。
http://sourceforge.net/projects/lshell/

via kwout

木曜日, 10月 23, 2008

Mantisのセキュリティバグ

登録したバグ情報の一部が、アカウントのない人から見られるようです。
本家では修正されているので、個別に対応するのが吉です。

金曜日, 10月 10, 2008

[Scala] jarファイルで実行

Scalaで作ったclassを、OfficeTakeoさんの記事を参考にしながら、なんとなくjarファイルにして、なんとなく実行するところまでやってみた。
D:\work\Scala>jar cvf webProxy.jar webProxy.*
マニフェストが追加されました。
webProxy.class を追加中です。(入 = 596) (出 = 445)(25% 収縮されました)

D:\work\Scala>java -classpath ..\..\scala-2.7.2.RC2\lib\scala-library.jar;jakarta-oro-2.0.8.jar;.;libhttpd.jar webProxy
2008-11-03 11:36:17 thread0 [127.0.0.1] : /pacServer => (200) class : "pacServer"
2008-11-03 (月) 23:36:17.281 127.0.0.1 192.168.10.193
~snip~

でも"-jar"とかなんで要らないんだろう?Javaは本当に良く分からないことばかりです。

月曜日, 10月 06, 2008

MantisからTracへ?

添付ファイルは移らないようだけど、いちおう移行スクリプトはある様子。
でもMySQLだけ対応なんですかね。

土曜日, 9月 06, 2008

[Solr] DataImportHandler

Solrのv1.3がそろそろ公開されるか、という段階。で、そのお試しをしている中で、注目なのがDataImportHandler
データベースからSolrへのデータフィードを簡単にしようというところから始まったようだが、例題にあるようにHTTP経由でのデータ取込みがサポートされており、、、これをうまく拡張利用すれば簡単なロボット機能が作れそう(HTMLタグの削除は簡単そうだし)。

RSSの例題を試すまでの手順をメモ。
・Solr本体をダウンロードして展開(今はRC2)
・例題用のSchema.xmlなどが入ったexample/example-DIHがあることを確認
・Solr本体のexample/conf以下に、example-DIHディレクトリ内のrss/以下をコピー(上書き)
・exampleのところで"java -jar start.jar"
・(稼動確認)ブラウザから"http://xxx:8983/solr/dataimport"にアクセス
・(取込指示)ブラウザから"http://xxx:8983/solr/dataimport?command=full-import"にアクセス
・(動作確認)ブラウザから"http://xxx:8983/solr/dataimport"にアクセス(statusMessagesが追加されてるハズ)
・(結果確認)ブラウザから"http://xxx:8983/solr/select/?q=NASA&version=2.2&start=0&rows=10&indent=on&hl=on&hl.fl=description"にアクセス(このときNASAで検索した)
・ちなみにdelta-importとすると差分更新ができるみたい

仕組みの絵もWikiにありますがかなり考えられたつくりで、


transformerというのを指定すると、例えばDBなりWebから取り込んだデータを、よしなに加工してからSolrにフィードすることができ、そしてこのtransformerに指定する関数は、、1.6系のJavaであればJavascriptなど、別な言語が使えるそうです。至れり尽くせり。

月曜日, 9月 01, 2008

[Scala] CJKでも十分?(SpanScorer)

SpanScorerというので、確かにCJK利用時のハイライタが改善された。

◆SpanScorerの実行例(○)
D:\scala-2.7.0-final\bin\test>..\scala -classpath .;lucene3\lucene-core-2.4-dev.jar;lucene3\lucene-highlighter-2.4-dev.jar;lucene3\lucene-analyzers-2.4-dev.jar HighlightCJKSpan
このプログラムは酒造で合資の会社である、<B>酒造合資</B>会社の事業所で作成されました

◆QueryScorerの実行例(×)
D:\scala-2.7.0-final\bin\test>..\scala -classpath .;lucene3\lucene-core-2.4-dev.jar;lucene3\lucene-highlighter-2.4-dev.jar;lucene3\lucene-analyzers-2.4-dev.jar HighlightCJKQuery
このプログラムは<B>酒造で合資</B>の会社である、<B>酒造合資</B>会社の事業所で作成されました

Javaが書けないのでScalaで(ソースは以下)。

import org.apache.lucene.analysis._;

import org.apache.lucene.analysis.cjk._;

import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight._;

import java.io._;

object HighlightCJKSpan {
val CONTENT = "このプログラムは酒造で合資の会社である、酒造合資会社の事業所で作成されました";
val QUERY_STRING = "酒造合資";
val F = "f";
//var analyzer: Analyzer = new NGramAnalyzer(1,3);
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 tokenStream :TokenStream = analyzer.tokenStream(F, new StringReader(CONTENT));
var scorer :SpanScorer = new SpanScorer( query, F, new CachingTokenFilter(tokenStream));

// println(tokenStream);
/*
var token :Token = tokenStream.next();
while(token != null){
println(token.termText());
token = tokenStream.next();
}
*/

var h :Highlighter = new Highlighter( scorer );
println( h.getBestFragment( analyzer, F, CONTENT ) );
} catch {
case e:StringIndexOutOfBoundsException => ()
case e:Exception => {
e.printStackTrace
}
} finally {
// println("FINALLY");
}
}
}

nagaShimaさんのページを参考にさせて頂きました。

金曜日, 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もそうなのですが、メールでコメントを返信できるととっても便利なので、、とても惜しい!です。

金曜日, 5月 02, 2008

[Life] ブログにソース

ブログにソースなどを張るとき、「HTMLのエンコードをしないと」と思いつつ、手でやるには面倒。。。そんなときにはこのページ(HTMLエンコードフォーム)。

水曜日, 4月 30, 2008

[Linux] bdbのダンプ

以外に忘れるのでメモベースで。
[tf0054@divers-high bird]$ db_dump -p tiedbfile
VERSION=3
format=print
type=hash
db_pagesize=4096
HEADER=END
/r/r/r.png
204,222
DATA=END
[tf0054@divers-high bird]$

月曜日, 4月 28, 2008

[PostgreSQL] PgQ続き(PerlでConsumer)

キューに入ったジョブを処理するプログラムを作りたいのだが、Pythonのフレームワークが提供されているのみでなかなか(Python以外で)書くことが難しい。何をどう呼んだら登録されるのか分からないし。。。
なので、大枠を例のままPythonを使って動かし、肝心の処理関数(通常はProcess_batch())だけをPerlで記述するためのTIPS。
#!/usr/bin/perl

use Data::Dumper;
use Sys::Syslog;

use Inline Python => <<'END_OF_PYTHON_CODE';
import sys, os, pgq, skytools
import syslog ,time

class zConsumer(pgq.Consumer):
def __init__(self, service_name, db_name):
self.procEvent = perl.procEvent;
pgq.Consumer.__init__(self, service_name, db_name, ["/tmp/var/mqueue/consumer.ini"])
def process_batch(self, src_db, batch_id, ev_list):
for ev in ev_list:
d = ev.data
self.log.debug ("event: %s | type: %s | extra1: %s" % (d, ev.type, ev.extra1))
if not self.procEvent(ev):
ev.tag_retry()
else:
ev.tag_done()

END_OF_PYTHON_CODE

my $objPgq = zConsumer->new("mqueue_consumer","src_db");

#print Dumper($objPgq);
$objPgq->start();

# イベント処理関数は、この関数を差し替えることでPerlで書けます
sub procEvent{
openlog(__FILE__, 'cons,pid', 'local4');
syslog('debug', 'this is Inline test');
closelog();

print Dumper(shift);
}

(Inline::Pythonのおかげで)上のプログラムでは各イベントを処理する部分だけ、procEvent()関数に切り出せていると思うので、これを書き換えればよい(=Perlで処理が書ける)です。
一部設定ファイルの指定は配列で渡さないとだめなのですが、Perlから渡すとなぜか上手くいかないので内部で宣言してしまっていますが、、、また調べます。

初めて使いますが、Inline::Pythonって便利ですね。これだあればアドオンモジュールをPythonで書かなくてはならない某商用アプリなんかも倒せそう。

日曜日, 4月 27, 2008

[PostgreSQL] PgQ続き(メンテナンス)

PgQでは、各キューそれぞれに3つのイベント格納用テーブルが用意してあり、それらを順繰りに使うことでバキューム対象となるデッドタプルが増えたテーブルをキュー処理に使わないようにし、ディスクIOを減らしている(らしい)。

tickerって5分に一度メンテナンスをしているが、上記のようなことをやっていたのですね。関数(PostgreSQLのPgQを仕込んだデータベースに格納された関数)が、下記が順に呼ばれています。
 ・maint_rotate_tables_step1(実際のローテートを行う)
 ・maint_rotate_tables_step2(その際にTXを付け替える)
 ・maint_tables_to_vacuum(バキューム対象テーブルをリストする)
ちなみに、ソース的には実際のバキューム処理はskytools-2.1.6/python/pgq/maint.pyに含まれています(あとTXってのはPgQ独自のトランザクションNo?のことだと思います)。

土曜日, 4月 26, 2008

[PostgreSQL] PgQ続き(リトライ他)

ジョブの戻し方おいて、リトライキューやフェイルキューにちゃんと入るかの実験、、をしていたらSkyTools(v2.1.6)にバグ発見(但しもうCVSでは修正されていました)。

こけさせるconsumer.pyは以下のようなやつで。

#!/usr/bin/python
import sys, os, pgq, skytools
import syslog

class Mailer(pgq.Consumer):
def sendWelcomeMail(self, params):
syslog.openlog("skycon")
syslog.syslog(params)
syslog.closelog()
return False

def process_batch(self, src_db, batch_id, ev_list):
for ev in ev_list:
d = ev.data
self.log.debug ("event: %s | type: %s | extra1: %s" % (d, ev.type, ev.extra1))
if not self.sendWelcomeMail(d):
ev.tag_retry()
else:
ev.tag_done()

if __name__ == '__main__':
script = Mailer("mailer_daemon","src_db",sys.argv[1:])
script.start()

これによりリトライキューに入ることを確認。

tf0054=# select * from pgq.retry_queue;
-[ RECORD 1 ]--+------------------------------
ev_retry_after | 2008-04-26 01:30:40.307409+09
ev_id | 15
ev_time | 2008-04-26 01:15:17.024847+09
ev_txid |
ev_owner | 1
ev_retry | 1
ev_type | welcome_email
ev_data | root@gmail.com
ev_extra1 |
ev_extra2 |
ev_extra3 |
ev_extra4 |

tf0054=#

ちなみに、consumerが稼動した最終時刻をみるためには以下。

tf0054=# select * from pgq.subscription;
-[ RECORD 1 ]-+------------------------------
sub_id | 1
sub_queue | 1
sub_consumer | 1
sub_last_tick | 2118
sub_active | 2008-04-26 06:38:03.550572+09
sub_batch |
sub_next_tick |

tf0054=#

というか日本語でも英語でも、Skytools全体がそうですが、特にconsumerのサンプルがまったくなくて困惑です(tag_retryなんてものクラス説明から見つけた)。

金曜日, 4月 25, 2008

[PostgreSQL] PgQ続き(設定ファイル)

それぞれpgqadm.py用と、consumer.py(キュー処理用の準備すべきプログラム)用の設定ファイルは以下のとおりでやってみます(昨日の続き)。

pgqadm.ini
[pgqadm]

job_name = ticker_test

db = dbname=tf0054 port=5432 host=127.0.0.1

# how often to run maintenance [minutes]
maint_delay_min = 5

# how often to check for activity [secs]
loop_delay = 0.1

logfile = /tmp/var/log/%(job_name)s.log
pidfile = /tmp/var/pid/%(job_name)s.pid

use_skylog = 0

consumer.ini
[mailer_daemon]
job_name = mailer_daemon
src_db = dbname=tf0054
pgq_queue_name = mailer
logfile = /tmp/var/log/%(job_name)s.log
pidfile = /tmp/var/pid/%(job_name)s.pid

木曜日, 4月 24, 2008

[PostgreSQL] PgQ

いまいち使い方が分からなかったPgQ(SkyToolsの一部であるジョブキューの仕組み)のお試しが出来たのでメモ.やることとしては,

  1. pgqadm.pyを使うためにPYTHONPATH環境変数をexport(skytools/lib/ython2.4/site-packages)
  2. 適用するデータベースを作る(ここでは"XXX"とする)
  3. pgplsqlがそのデータベースで使えるか確認(pg_languageカタログ/無いならcreatelang)
  4. share/skytools以下のsqlスクリプトを流す(txid.sql>pgq_ext.sql>pgq.sqlの順?)
  5. キューを"select * from pgq.create_queue(’mailer’)"で作成
  6. psqlで接続し"select * from pgq.queue"で確認
  7. tickerデーモンを起動する(例えば"../bin/pgqadm.py ./pgqadm.ini ticker -d")
  8. consumerデーモンをpythonで作る(※下にサンプルソースを掲示)
  9. consumerデーモンを起動する(例えば"../var/consumer.py consumer.ini -v")
  10. キューに入れてみる(入れるものをイベントと言う.例えば"select pgq.insert_event('mailer','welcome_email','tf0054@gmail.com')")

と言った感じ.こちらのサイトを参考にしたが,トリガを作ってイベント登録をさせる仕組みが面倒だったので直接インサートして実験.
また,サンプルのconsumerデーモンのPythonソースが一部実装されてないので,以下な感じで補完することが必要。
#!/usr/bin/python
import sys, os, pgq, skytools
import syslog

class Mailer(pgq.Consumer):
def sendWelcomeMail(self, params):
syslog.openlog("skycon")
syslog.syslog(params)
syslog.closelog()
return True

def process_batch(self, src_db, batch_id, ev_list):
for ev in ev_list:
d = ev.data
self.log.debug ("event : %s | type : %s | inserted by : %s" % (d, ev.type, ev.extra1))
if not self.sendWelcomeMail(d):
sys.exit(1)
ev.tag_done()

if __name__ == '__main__':
script = Mailer("mailer_daemon","src_db",sys.argv[1:])
script.start()

これを以下のとおり実行して、
./consumer.py ../etc/consumer.ini &

syslogにデータでるところまで確認できました.また,使える関数などはこちらで見られます.あれ?でも,,,
  • tickerは何をしてくれるんだっけ?
  • pgqadmのinstallってしてなかったけどいいの?

土曜日, 4月 12, 2008

[Linux] tinc

VPNを張るためのデーモン。IPSECほど本格的でなくてもよい用途には適していると思います。
clipped from www.tinc-vpn.org
tinc
 blog it

木曜日, 4月 10, 2008

[Linux] unexpected zero page

レンタルサーバにZABBIXを入れてリソースを検証こめて見ているのですが、障害によるリブートがあったらしく、ZABBIX_SERVERが起動しなくなった。ログを見ていると、
22439:20080410:024033 Query::select min(clock) from history_uint where itemid=18450
22439:20080410:024033 Query failed:PGRES_FATAL_ERROR:ERROR: index "history_uint_1" contains unexpected zero page at block 13758
HINT: Please REINDEX it.

PosrgreSQLを使っているので以下コマンドを実行して解消。
zabbix=> reindex index history_uint_1;
REINDEX
zabbix=> \q

火曜日, 4月 08, 2008

[Linux] amebloもですね

アメブロでもリファラでの画像閲覧禁止がなされているんですね。
確かに直リンクなどは論外ですが、しかしgoogleリーダなどから写真が見られないのはちょっと。。ということでY!同様にリファラプロキシで対応。
Y!とちがって普通に組むとgzip圧縮応答されたり、HOSTヘッダによるリダイレクトが入ったりと、いくつかはまりました。。

土曜日, 4月 05, 2008

[Linux] ebb

libevを使った高速httpd。Rubyな香りがしていますが、これ単体で使うことができそうです。
clipped from ebb.rubyforge.org
Benchmark
 blog it

nginxやlighttpdと比較してどうなのでしょう。

金曜日, 4月 04, 2008

[Linux] libev

memcachedはすこぶるリソース消費が少ないことを体感していた矢先、その中核であるlibeventの対抗馬libevを見つけた。
よりメモリ消費が少ない
より効率的なイベントループ
libeventエミュレートモードあり

と書かれており、確かにベンチマーク資料を見てもよさげに見えますので、何かの折に。

月曜日, 3月 31, 2008

[Linux] ブラウザの挙動

サイトの閲覧快適度(ユーザがさくさく感を感じる)を上げるには、amazonなどでもやられているように、主に画像部品は複数のドメインに分割するのがよい。
こうすることで、ブラウザはドメイン単位(これが同じIPのホストにアクセスしてもよい)に2本は並列でファイルをとりに行ってくれるため。ただし3ドメイン以上はやっても無駄(セッションは同時に6本まで、という制限もあるため)。
さらに注意としては、Javascriptファイルはシーケンシャルに取る仕様である(IEは確認)ので、".js"を分けるときはほどほどに。

日曜日, 3月 30, 2008

[Linux] サイト設定をProxyでテスト

mod_proxyを用いて、apacheにプロキシ機能を組み込んでおく。
このあとで、(例えば)以下のようなLocationディレクティブを読み込ませておき、ブラウザでこのプロキシを通してr25.jpを見ると、
<LocationMatch "(.*)css.r25.jp/common/(.*)">
ExpiresActive on
ExpiresDefault "access plus 4 weeks"
</LocationMatch>

オリジナルのレスポンスに追加する形で、Expireヘッダが返されることが確認できる。
Location便利。

金曜日, 3月 28, 2008

[Linux] AOL Pagetest

ブラウザでのサイトアクセスを可視化してくれるツール。"IBM Page Detailer"というほうが有名だけど、"AOL Pagetest"のほうが扱いやすい(GIF画像としてエクスポートできること、ブラウザでのページレンダリング開始のタイミングも表示してくれる(緑の縦棒)こと等)。
 blog it

月曜日, 3月 24, 2008

[Linux] nginxのServerヘッダとか

nginxのデフォルトなHTTPレスポンスヘッダには、"Server"ヘッダがバージョン付きで表示されているので、セキュリティホールになりかねない。
HTTP/1.1 200 OK
Server: nginx/0.5.35
・・以下略・・

これはしかし、ソースを変えなくともngx_http_headers_moduleのディレクティブ指定で消すことができる(正確には"nginix"とだけ出してバージョンを消す)。
server {
listen 8090;
server_tokens off;
server_name divershigh;

#charset koi8-r;
charset utf-8;
・・以下略・・

ちなみに、404ページでもデフォルト(404ページの指定無し)だとバージョンが表示されてしまうのでキチンと自分用のページを指定して置くことが必要。

日曜日, 3月 23, 2008

[Linux] SlideShare

SlideShareというパワポ共有サイト(?)では、そのバックヤードにAWS(というかS3)が使われている。



同サイトではブラウザ上でのスライド表示にFlashを使っているが、こいつは裏でS3に対し一枚づつデータを取得しているようだ(LiveHeadersで確認)。
http://s3.amazonaws.com/slideshare/high-performance-web-pages-20-new-best-practices-120577522992998-3-slide-1.swf
http://s3.amazonaws.com/slideshare/high-performance-web-pages-20-new-best-practices-120577522992998-3-slide-2.swf
・・・
http://s3.amazonaws.com/slideshare/high-performance-web-pages-20-new-best-practices-120577522992998-3-slide-76.swf

同サイトでは、PPT自体のダウンロードもS3から行われるようになっている、、が、ここにはスライドの公開非公開をユーザ側で操作できるよう、一段の制御が掛かっている(ユーザ側でPublic指定していれば、SlideShareのサイトで正しくS3へのリダイレクトを行ってくれる、Private指定ならこのリダイレクトが行われずダウンロード不可(ファイル名と認証キーを混ぜ込んだSHA1キーを正しく持ってゆかないとS3的に通してくれない≒他のPPTでURL作ってファイル名を変えてもダメ))。

上手く使ってますな(丸ごとダウンロードは出来なくても上記みたいに1枚づつならswfで取れるけどね)。

木曜日, 3月 20, 2008

[Linux] fdm

procmailの代替ツールにfdmというのがあります。procmailrcは独自色が強いですが、これは比較的キレイな正規表現による制御が可能です。

月曜日, 3月 17, 2008

[Linux] Tomcatを本番で使うには

Tomcatは、かなり素人なので、チューニングの情報が少なくて困ります。
でも、その中でも当然やるべきなものがいくつかありました。

$TOMCAT_HOME/conf/web.xml

・JspServletの"development "は"false"にするべし(Trueにしちゃうと毎回更新確認する)
・checkIntervalはまぁ"5"程度に(5秒に一度更新確認)
元ネタはこちら.

金曜日, 3月 14, 2008

[Linux] sharedance

memcachedは結構汎用的な使われた方を意図しているようですが、ウェブサイトのセッション管理用メモリDBでsharedanceというのがあるそうです。名前のセンスがよいです。
PHPのAPIを標準搭載していますが、、今みたら2006年が最終更新なのですね。。。解説ページはこちらを参照。
libevent回りを調べていて見つけました。

月曜日, 3月 10, 2008

[Linux] tethereal

tetherealというパケットキャプチャ解析ミドルのCUIがあり、これを使うことで実はPV分析なんかも上手くすると出来るハズです(今更ですが"I, newbie"さんのブログを見てこんなことを考えていたのを思い出しました。RTメトリクス高いですし)。

[Amazon] images-amazon.com

アマゾンで買い物をしていて、ブラウザのステータスバーに出ているドメイン名が気になった(ec2.images-amazon.com)。ec2はクラウドをバックに使ったシステムであると公にしている(それはそれですごいけど)のだろうが、それより驚くべきはここに当てられるURL。
aaugh.comによると、このURLをいろいろいじることで特価マークを出したり消したり、画像サイズを変更したり出来るらしい。さすが。
まぁ単発で見るとたいしたRESTではないけれど、あれだけの商品数を捌いていることを考えると・・・。

日曜日, 3月 09, 2008

[Linux] Y!で書かれたblogは

Yahoo!ブログをRSSで読むと、画像が「表示できません」になります。これは直リンク禁止なのかなんなのか分かりません(知りません)が、google/readerで読んでいて不便なので、以下のプロキシを作って読むように変更しました。

・rss.xmlを本プロキシ経由で読み取ることにする
・このプロキシさんは言われたURLで結果を取得する
・また、そのときはY!のリファラを付けて取りに行く
・さらに、結果内の画像リンクは自分経由になるよう書き換える


これで綺麗に見えるようになりました。いちおうソースを置いておきます。ご覧いただければ分かるとおり、たっきーさんのProxyを改変させて頂いて作ってみました。

金曜日, 3月 07, 2008

[Linux] LDAPの認証エラー

以下が出て、原因がいまいち検索しても見当たらなかったが、解決したのでメモ。
Invalid credentials

pam_check_host_attrを使っているのに、当該ユーザのhostアトリビュートに記述が無かったことが原因。

木曜日, 3月 06, 2008

[Linux] SquidGuard

Squidで、配下の人に対して禁止URLを設定する場合、SquidGuardというのを使うのが一般的なんですね。。知りませんでした(設定で無理にやったことはあります)。

月曜日, 2月 25, 2008

[Linux] mod_rewrite

supercacheという、普通にCGIの結果をユーザに返すだけでなく静的HTMLにもしておき、後続の(いくつかの)同じ情報へのアクセスをそれで返してしまおう、というのがあります。
これはmod_rewriteでやるので良いのですが、更新日時を見てエクスパイヤさせたい(HTMLはあるけどあえてCGIに回して更新させたい)場合、やはりRwriteMapのprgを使うが良いのだろうか。。思案中。
ちなみに、RewriteMapで外部プログラムを使用する場合はRewriteLockでロックファイルを指定する必要があるらしいので注意。

日曜日, 2月 24, 2008

[Linux] mMesure

mMesureとは、チューニングポイントをアドバイスしてくれる機能が付いたMySQLのモニタリングツール(WebGUI)。有効性はともかくとして、PostgreSQLでもこの手のツールがそろそろ(市場として)必要になってくると思います。

土曜日, 2月 23, 2008

[Linux] Workflowエンジン

JP1のジョブ管理と何が違うのかよく分からないのがWorkflowエンジン。ワークフローというからには定型タスクそれぞれであれこれやってくれる(やったよねと確認してくれる)のだろうか。
GalaxiaというPHPで出来たOSSがある。これ自体はTikiwikiというCMSの一部だそうな。

金曜日, 2月 22, 2008

[Linux] scpだけ許すには

scpの実体はsshらしく、制限するにはバイナリとして入れ替えるしかなさそう。これをする場合はscponlyというのや、rsshというのが候補。
別の方法としてOpenSSHとして当該ユーザの実行可能コマンドを制限してしまえば、まぁ良いといえばよいような。Matchという全体オプションでやるか、個人のAuthorized_keys内でもcommandオプションで制限できるのでこれを使うか(でもこれはユーザが自発的に書き換え可能だからセキュリティ的には微妙)。

木曜日, 2月 21, 2008

[Linux] ngnixの処理指定

ぜんぜん良く分かっていないが、RTSIGというのはlibrtを使った非同期IO機構であり、これとEPOLLは並列な様子(ngnixのソース内の分岐がそうなっているように見えるので)。
ngx_event_init_conf(ngx_cycle_t *cycle, void *conf)
{
ngx_event_conf_t *ecf = conf;

#if (NGX_HAVE_EPOLL) && !(NGX_TEST_BUILD_EPOLL)
int fd;
#endif
#if (NGX_HAVE_RTSIG)
ngx_uint_t rtsig;
ngx_core_conf_t *ccf;
#endif
ngx_int_t i, connections;
ngx_module_t *module;
ngx_event_module_t *event_module;
~snip~

というか、事実実験している環境ではobjs/Makefileの中でもrtsig、epoll、sendfileをリンクする指定になっていた。
~snip~
objs/src/event/modules/ngx_rtsig_module.o \
objs/src/event/modules/ngx_epoll_module.o \
objs/src/os/unix/ngx_linux_sendfile_chain.o \
~snip~

librtを使った非同期処理であればコンテキストスイッチが少なくなり(IO多重であるepollよりも)速い、とKLabさんの資料で読んだのだけど、どういう関係で実際のところどうなんだろう。

水曜日, 2月 20, 2008

[Linux] ldap-stats.pl

ファイル名でなんとなく想像がつくとおり、LDAPの統計情報を取るスクリプト。v2.3にも対応しているとのこと。以外にインフラ基盤の中でも「動いていてアタリマエ」になりがちなopenLDAPも、きっちり監視したいですね。

月曜日, 2月 18, 2008

[Linux] nginxとapache

ちまたで話題のNginxとapacheのパフォーマンスレポートを見つけました。面白いのはレスポンスタイム。

ブラウザ体感的にこんな効果があるなら、これだけで使ってみたいです。さらに、変わったところではmod_perlみたいにPerlを組み込みで使うことも出来るそうです。

ちなみに、lighttpdとの比較ではCPU負荷観点でnginxのほうが優れているとのことでした。

日曜日, 2月 17, 2008

[Linux] nginxのstatus

Nginxは運用者にとってちょっと制御してる感が持ちづらい(ワーカプロセス1つで1024コネクションって言われても。。)。コレを少しでも改善するためには./configure時に"--with-http_stub_status_module"をつけると良い。
http://wiki.codemongers.com/NginxHttpStubStatusModule

via kwout


あと、これを見られるようにlocationを指定すれば、apacheのmod_statusっぽい情報が得られるようになり少し安心できる気がする。

土曜日, 2月 16, 2008

[Linux] colinux-0.7.2

colinuxは、手軽に新しいアプリケーションを試すことができたり重宝している割に、バージョンアップに気が付いていませんでした。2.6.22ベースになったようです。

金曜日, 2月 15, 2008

[Linux] nginxの感想

この手のスレッドモデルなhttpdはどうも動作を掌握できている感が無くて困る。apacheのpreforkなんかだとプロセスがセッションに張り付いているのね、ふんふん、みたいに分かり易いが、スレッドモデルの場合はどう理解するのか。
まぁたとえば、なんとなくマニュアルには以下のようにある。
max_clients = worker_processes * worker_connections

ので、唯一、同時接続数が上限に来ちゃうときのロジックはなんとなくわかった。

木曜日, 2月 14, 2008

[Linux] OKWS

OKWSというevent駆動を実験実装した(?)Webサーバがあります.2006年のものなのでたぶんnginxなどに成果は取り入れられているような気もします.が.

水曜日, 2月 13, 2008

[Linux] nginx

nginxの実験をするためにコンパイル。
よくわからないエラーが出たら、それはpcre-develが入っていないからかもしれません。

[tf0054@divers-high nginx-0.5.35]$ ./configure --prefix=/mnt/nginx-0.5.35 \
--with-http_stub_status_module \
--without-http_proxy_module \
--without-http_geo_module
~省略~
[tf0054@divers-high nginx-0.5.35]$ make
make -f objs/Makefile
make[1]: ディレクトリ `/home/tf0054/nginx-0.5.35' に入ります
cd /lib64 \
&& if [ -f Makefile ]; then make distclean; fi \
&& CC="gcc" CFLAGS="" \
./configure --disable-shared
/bin/sh: line 2: ./configure: そのようなファイルやディレクトリはありません
make[1]: *** [/lib64/Makefile] エラー 127
make[1]: ディレクトリ `/home/tf0054/nginx-0.5.35' から出ます
make: *** [build] エラー 2
[tf0054@divers-high nginx-0.5.35]$

バイナリが642kbって、、apacheとは比較にならないほど小さくてよいです。

月曜日, 2月 11, 2008

[Linux] supercache?

ウェブサイトのパフォーマンスを上げるために、アクセスされたときCGIからの出力結果を(ブラウザに返すだけではなく)静的ファイルにも吐いておき、次回以降はこの静的ファイルをapacheで読み込ませて返させよう、というのがよく行われます。
この方式、以外に呼び名に困るのですが、PHPのsymphonyというフレームワーク内ではsupercacheと呼ばれているそうです。。。名前としては微妙ですが、総称としてこれで呼び習わすことにしようと思います。

木曜日, 2月 07, 2008

[apache] Roller

movabletypeのような、ブログ生成ツール(というか彼らはCMSといっていますが)として、apacheファンデーションではRollerというのがあるそうです。
今現在v4.0として公開されており、ちょうどこのバージョンから(同団体の中での位置づけが)インキュベーションレベルから昇格したそうです。
意外に有名なわりにはMTはソースコードが微妙な気がするので、こっちの利用も検討しようと思います。

火曜日, 2月 05, 2008

[Linux] プロセス監視

ZABBIXでのプロセス監視は、sshdなどの例しかなく設定に困った.
mailmanの監視をするには、こんな感じでアイテムを作ればよいらしい(その後トリガを張り忘れないように).
proc.num[python,mailman,,mailmanctl]

事例が少なく勉強しずらいが、機能自体は充実していますね(最後の引数はプロセス特定のためのフィルタです).

水曜日, 1月 30, 2008

[Life] HTMLのエスケープ

blogにソースを貼り付ける際、"&"やらを自分で脳内変換するのは大変。
alvinさんのこのツールで行うのが吉。

火曜日, 1月 29, 2008

[Life] アイテムの遅延ロード

lazy_writerが分かりやすいが、サイトページの画像など部品(アイテム)を後から差し込むことでユーザの体感速度≒サイトのさくさく感を向上することが出来ます。
これはウノウさんclouderさんのところでも紹介されています。

土曜日, 1月 26, 2008

[MT] MTSetVarBlock?

MovableTypeはv4からMTSetVarBlockというタグが出来て、更にCMSとしての機能を拡充したという話です。
よく分からなかったのですが、これは例えば、カテゴリごとに異なるcssを適用したい、などとき、ココに紹介されているような書き方で対応することが出来ます。
この例のようなカテゴリ別、は、今はMTIfCategoryというタグがあるのでしたりすることが出来ますが、何かMTIf...が準備されていない要素別に変更をかけたい場合に使うのだと思われます。

なるほど。。MTって便利ですね。

金曜日, 1月 25, 2008

[Linux] iptrk

iptrkとは、自分宛のパケットは全部飲み込んじゃうプロミスキャスモード(promiscuous mode)を使って、流れるトラフィックを視覚化してくれるツール。
何かの折には便利かも。

木曜日, 1月 24, 2008

[Linux] CookieMonster

ブラウザは、上手くしてやらないと画像のリクエストでもCookieをもって行ってしまう。これを回避するためにはドメイン名を変えるのがよさそうだが、しかしサブドメインを切るだけじゃあまり意味ない?(CookieMonsterと呼ばれる脆弱性(?)があるんだから)。

水曜日, 1月 23, 2008

[Life] JSActionかJSActionsか

tumblrというブログサイトがあって(ミニブログと呼ばれるサイトだそうだが、根本的には何が違うのかあまり分からない)、ココにブラウザ内の部分キャプチャ画像をパスっと投稿できるFirefoxプラグインがありました。

このプラグインは、正確にはJSAction(s?)というFirefoxアドオン作成用フレームワーク(?というのか)に載っていて、マウスの右クリックメニューから使います。
確かにパスっと投稿できて便利だけどでも、投稿だけですよね。。?これからClipmarkのプラグインでよいかなぁ。

月曜日, 1月 21, 2008

[Linux] BASIC認証のログアウト

BASIC認証は毎回認証判定をしているという意味では、ログアウトという概念は当てはまらない。
が、ユーザ的にはそんなことはどうでもいいので、見た目ログアウト(ブラウザが認証情報を送って来なくする方法)をする方法は認証エリア内で401を返しちゃうことで実現できる(こちら)。

日曜日, 1月 20, 2008

[Linux] ロードバランス

Linuxでロードバランサと言えば、ちょっと前にbalanceを実験したことがありました(パケットロスとかひどかったような記憶があります)。最近はlibeventを調べていて見つけたPLB(Pure Load Balancer)というのはどうなんだろう。
L7するならPerlbalも一時期話題になりましたが、でも結局、L3でいいならDSRが良いのかなぁと思います(設定も簡単ですし)。

土曜日, 1月 19, 2008

[Linux] libevent

内容はよくわかっていないが、libeventはカーネルのepollとあいまって、速度を求めるときにすばらしいらしい。

木曜日, 1月 17, 2008

[Perl] PerlのみでXML解析

XML::Parser::Lite::Treeというモジュールで可能。レンタルサーバ対応などで使う場合などに重宝しそうです。

土曜日, 1月 12, 2008

[Linux] ファイルの更新日時を変える

やってはいけないことですが。ファイルの更新・最終参照日時を変更するには以下のコマンド
touch -d "2 February 2002 10:00am" file1.txt

これでmtimeが"2002年2月2日の午前10時"になります(元ネタ)

木曜日, 1月 10, 2008

[Life] MarkMail

海外の技術系MLに限られると思いますが、横断的に検索できる専用サイトMarkMailです。投稿件数のグラフが見えているのがおしゃれ。
元ネタは此方です。

水曜日, 1月 09, 2008

[Life] TonyGraphs

Excelで、セルの中に小さなグラフを書くaddonがありました。
とてもかわいいので定期報告資料などで使うと場が和むかもしれません。

月曜日, 1月 07, 2008

[Lige] Gainer

本屋で見たが、本まで出ているのですね。ハードウェアまで含めて遊び始めると、いろいろ出来て面白そう。というわけで、とりあえずトリガーデバイスさんでキットだけ購入。ただ、、覚えることが多くなりすぎるかもしれませんが。

日曜日, 1月 06, 2008

[erlang] Process-one

以前見ていたejabberdやTsungという秀逸(と噂される)ミドルを作っているフランスの会社。この会社はCEANというerlangのライブラリ群を提供しており、昨今はこれを使うのが流行か。
clipped from www.process-one.net
 blog it