日曜日, 1月 25, 2009

[Linux] Kirin

相当今更感があるのですが、Kirinという画像のリサイズなどが行える、画像変換のWebAPIを使ってみました。アプリキーをもらってから使うものなのですが、、説明に書かれている"呼び出し元サーバ名"って、、変換したい元画像が置いてあるサイトのドメイン名を書くのですね。。。うーん。
http://kirin.tatamilab.jp/

via kwout

たまたまGIF画像のリサイズをしてみたので気がついたのですが、戻しはJPGなんですね(JPGのコメントにはしっかり"Kirin Library 1.11 2009/01/25 0"と入っていました)。

火曜日, 1月 20, 2009

[Scala] TwitterもScalaで

Twitterでユーザ間のメッセージ送受信を実装するために使っている(のであろう)、キューイングシステムが、Rubyから(!)いつのまにかScalaにて書き直された、とのこと。その上これはソースも公開されているので、ぜひ勉強がてら読んでみたい(最近githubが増えてきましたね9。

[Perl] 携帯サイトのアクセス分析!

MovableTypeを携帯対応する一番簡単な方法は、mt4iなわけですが、このアクセス解析をapacheログでやるのも面倒に思いました。
なので、最近出たGA4Kという、GoogleAnalyticsに携帯アクセスを流すPHPライブラリ(まぁ原理的にはココでも紹介されているとおり、たいしたことはないのですが)を、Perlモジュールに作り変えてみました(以下ソース。ウェブプロパティID(utmac)とウェブサイトURL(utmhn)は書き換えてください!)。
#
# This code is test module for k-tai web site (ex mt4i)
#
package Onamon;

sub accessGoogleAnalystics{

use Sys::Syslog;
require HTTP::Request;
require LWP::UserAgent;

my $utmac = 'UA-179xxxx-2';
my $utmhn = 'http://onamon.com';
my $utmn = 1000000000 + rand(9999999999 - 1000000000);
my $cookie = '';
my $uservar = '';
my $random = 1000000000 + rand(2147483647 - 1000000000);
my $today = time();
my $referer = $ENV{'HTTP_REFERER'};
my $utmp = $ENV{'REQUEST_URI'};

if($ENV{'HTTP_X_UP_SUBNO'}){
$uservar = $ENV{'HTTP_X_UP_SUBNO'};
}elsif($ENV{'HTTP_X_DCMGUID'}){
$uservar = $ENV{'HTTP_X_DCMGUID'};
}elsif($ENV{'HTTP_X_JPHONE_UID'}){
$uservar = $ENV{'HTTP_X_JPHONE_UID'};
}
$cookie = $uservar;

my $urchinUrl = 'http://www.google-analytics.com/__utm.gif?utmwv=1&utmn='.$utmn.'&utmsr=-&utmsc=-&utmul=-&utmje=0&utmfl=-&utmdt=-&utmhn='.$utmhn.'&utmr='.$referer.'&utmp='.$utmp.'&utmac='.$utmac.'&utmcc=__utma%3D'.$cookie.'.'.$random.'.'.$today.'.'.$today.'.'.$today.'.2%3B%2B__utmb%3D'.$cookie.'%3B%2B__utmc%3D'.$cookie.'%3B%2B__utmz%3D'.$cookie.'.'.$today.'.2.2.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)%3B%2B__utmv%3D'.$cookie.'.'.$uservar.'%3B';

my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $urchinUrl);
if ($ENV{'HTTP_ACCEPT_LANGUAGE'}) {
$request->header('Accept-language' => $ENV{'HTTP_ACCEPT_LANGUAGE'});
}
if ($ENV{'HTTP_USER_AGENT'}) {
$request->header('User-Agent' => $ENV{'HTTP_USER_AGENT'});
}
my $response = $ua->request($request);

openlog(__FILE__, 'cons,pid', 'local4');
if ($response->is_success) {
syslog('debug', 'OK('
.$ENV{'REQUEST_URI'}
.'^'.$ENV{'HTTP_USER_AGENT'}
.'^'.$ENV{'HTTP_X_DCMGUID'}
.')'
);
} else {
syslog('debug', 'NG');
}
closelog();
}
1;
汚い、というか何も考えていないソースで恥ずかしいですが、一応。mt4iに適用するなら、mt4i.cgiと同じディレクトリに上記ソースをOnamon.pmとして保存し、mt4i.cgiの最初のほうに、
~略~
use FindBin qw($Bin);
use List::Util qw(first);
use HTTP::Date;
use CGI::Carp qw(fatalsToBrowser);

# ★ここから
use Onamon;
if($ENV{'REQUEST_URI'} !~ /(png|jpg)$/){
Onamon::accessGoogleAnalystics();
}
# ★ここまで

my $bin;
my $log_pl;
our %cfg;

BEGIN {
~以下略~
と足します。お名紋贈り物ブログに適用してみたのですが、、果たして動くことやら。

日曜日, 1月 18, 2009

[Perl] CTPP2テンプレートエンジン

CPANのPerlモジュールがひたすらupdateされていて、頑張っている感のあるテンプレートエンジン(C++で書かれていて各種言語でバインディング可能なもの)。
http://freshmeat.net/projects/ctpp2/

via kwout

気になるのでメモ(Perlのモジュールはコチラ)。

土曜日, 1月 10, 2009

[Flash] JPEG格納フォーマット

以下ページに良くまとまっている。
http://pwiki.awm.jp/~yoya/?Flash/JPEG

via kwout

こられとやまさんページのFlashをswfmillで解析中(珍しくFlashLite1.1で出来たスライドショー)。

月曜日, 1月 05, 2009

[Life] XMLファイルをきちんと扱う

最近ミドルウェアの設定ファイルをXMLで書かなくてはならないことが多くなってきた。
可読性が意外と低いので、きちんとXMLを解釈して折りたたみなどができるエディタを探していたのだが、とりあえずjEditでできることまでわかった。

Pluginが1つ必要(その名もXMLというやつ)なのだが、PluginマネージャというGUIでさくっとインストールできる。

希望していた動きをするので、今しばらくはこれで行こうと思う。

月曜日, 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

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