Archive for 10月, 2007

30
2007

すでにanalogで解析をしていますが、こちらも試してみました。
macportsにあったのでインストール。

# sudo port install awstats
**********************************************************************
Add the following to your Apache httpd.conf, save, and restart Apache:
Alias /awstatsclasses "/opt/local/www/awstats/classes/"
Alias /awstatscss "/opt/local/www/awstats/css/"
Alias /awstatsicons "/opt/local/www/awstats/icons/"
ScriptAlias /awstats/ "/opt/local/www/awstats/cgi-bin/"
<Directory "/opt/local/www/awstats/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Find your sample config file in /opt/local/etc/awstats, rename it to
"awstats.domain_name.conf", and edit it to configure Awstats. You
can then access Awstats by pointing your browser to:

http://yourdomain/awstats/awstats.pl

**********************************************************************

あとで気がついたのですがmacportsでインストールしたあとに表示されるメッセージの
Alias /awstatsicons “/opt/local/www/awstats/icons/”
は間違いでは?
/opt/local/www/awstats/icons/は存在せず
/opt/local/www/awstats/icon/があります。
Alias /awstatsicons “/opt/local/www/awstats/icon/”
になおしときました。
設定ファイルのLogFormatの部分は
[apache]
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %D” combined
[awstats:customize]
LogFormat = “%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other”
になりました。単純に%Dに対してotherを一個追加しました。
あとはSiteDomainで指定した名前を-config引数にして
perl /opt/local/www/awstats/cgi-bin/awstats.pl -update -config=trac.makotokw.com
で解析を行えます。
ですが、logrotateしている過去のログも解析してみることにしました。awstatusではロードバランサでWebサーバを分散した場合などのためにログをマージするツールが同梱されています。それを使ってlogrotateされたログを一つのファイルにまとめます。

sudo perl /opt/local/www/awstats/tools/logresolvemerge.pl /opt/local/apache2/logs/logs/trac.makotokw.com-access_log.* > trac_merged_old_log

次に-logfile引数を使ってマージしたログファイルを解析させます。

perl /opt/local/www/awstats/cgi-bin/awstats.pl -update -config=trac.makotokw.com -logfile=/Users/makoto_kw/trac_merged_old_log
log

これで解析okなのですが、現状ちょっと困っている点が二つ。
1) LogFormatを複数指定できないこと
analogではLogFormatを複数指定できて順番にチェックされるのですが、awstatsではどうも一つしか設定できないようなのです。途中でLogFormatを変えた場合などに困ります。
2) 過去のログは解析されない
解析したことのあるもっとも最新のログよりも古いログは解析対象にならず無視されます。実装上仕方がなさそうですが過去のログが見つかった場合などにはもう一度全部解析やり直しになりそうです。
LogFormatを複数指定できなかったので一部のLogを解析できなかったのですが、それでもなかなか見た目の表示がきれいな解析ツールなのでとりあえず満足しています。

27
2007

前々からシンタックスハイライトをしたいと思っていたのですが、検索したところ
google-code-prettifyでソースコードのシンタックスハイライト
http://mahata.net/mt-dev/2007/10/googlecodeprettify.html
という記事を見つけたので試してみることにしました。
http://code.google.com/p/google-code-prettify/
からダウンロードします。
prettify_31_Aug_2007.zip
prettify-small_31_Aug_2007.zip
がありました。
コメントなどが取り除かれファイルサイズが少ない
prettify-small_31_Aug_2007.zip
をDLします。
zipを解凍すると
prettify.js
prettify.css
がでてきます。
とりあえず
DocumentRoot/js/
にjsもcssもおきます。
で、Movable Typeにログインしてテンプレートモジュールのヘッダファイルに

<link href="/js/prettify.css" rel="stylesheet" type="text/css"/>
<script src="/js/prettify.js" type="text/javascript"></script>

を追加。
次にbodyタグにて

<body onload="prettyPrint()">

としてprettyPrint()を呼び出したいのですがMT4の上記のヘッダテンプレートではonloadで呼び出すスクリプトをbody_onloadにSetVarしておかないといけないようです。
アーカイブテンプレートのブログ記事を見ると

<MTSetVar name="body_onload" value="individualArchivesOnLoad(commenter_name)">

となっていたので

<MTSetVar name="body_onload" value="individualArchivesOnLoad(commenter_name);prettyPrint();">

にします。
アーカイブテンプレートのブログ記事リストではbody_onloadにはSetVarしていなかったので

<MTSetVar name="body_onload" value="prettyPrint();">

<$MTInclude module="ヘッダー"$>

よりも上に入れます。
あとは

<pre class="prettyprint">Hello, World.</pre>

でくくればok。

23
2007

WiX(Windows Install XML)始めました。WiX toolsetをVisual Studio .NETのプラグイン経由で使ってMSI形式のインストーラを作ってます。WiXはMicrosoftのものですがオープンソースでsourceforgeで公開されています。
http://wix.sourceforge.net/
とりあえず勢いでV3.0から始めました。
VotiveというVisual Studio .NETプラグインを入れるとプロジェクトテンプレートもVisual Sudioに入るのでSlnにSetupプロジェクトをまとめられて便利です。まぁVisual Studio付属のセットアッププロジェクトでも、InstallShieldのプロジェクトもSlnにまとめられるので別にそれが特別なことではありませんが。。。
それにしても仕事でInstallShieldも使いましたがいっぱい設定があってわけわかめでした。別にWiXにしてもWindows Installerという枠の中では同じようなものなのですがテキスト(XML)形式だとやっぱりプログラマ感覚なのか抵抗なく使える気がします。
今までの経験上インストーラというのはどうも特別な専門職的なイメージがあって、エンジニアの中でも一部の有識者(インストーラ担当者)と大部分の素人(デベロッパー)に分かれていると思います。自分も含めWiXで少しでもインストーラについて詳しくなってインストーラ担当者との距離を近づければいいな。と思います。

18
2007

IE内のJScriptでActiveXObjectでnewしたCOMでWM_DEVICECHANGEがとれなくて、ひょっとしてここまでの計画が全部パー?と思い冷や汗がでました。
TypeTでメモステの出し入れで確認していたのですが、普通のC++のWindowsApplicationでもWM_DEVICECHANGEを取れなくてどうやらSDカードとのデュアルドライブなのでそのあたりに原因あり。
普通のRemovable Driveはちゃんとイベントとれました。
・・・BrowserでDeviceの認識チェックする人なんてあまりいないんだろうな。

16
2007

prototype.jsと言えばAjaxのライブラリと思われがちです。ただコードを見た人はわかると思いますが名前の通りprototype指向のjavascriptを機能を拡張するライブラリです。
Ajaxを使うどうかとは別問題で、JavaScriptでの処理結果をHTMLで表示する場合は、

みたいなのをあらかじめ書いておいて、

みたいに書くと思います。
prototype.jsを使うとdocument.getElementById(“content”)を$(“content”)と置き換えることができるのでコードを速く書く、短く書くにはもってこいです。
さてAdobeのAjaxフレームワークのSpryにも$(“”)が用意されています。僕が試しているのはver1.6ですが、SpryDOMUtils.jsをincludeするとSpry.$(“”)が使えるようになります。Spryオブジェクトのfunctionで使えるのでprototype.jsの$(“”)と競合することはありません。

15
2007

ActiveXの証明書の問題に打ちのめされWalkmanの再生履歴をアップするWebアプリの開発を放置して数ヶ月。ActiveXをあきらめて、普通のCOMを使いPackageForTheWebか何かでインストールさせようという方向に転換。ActiveXのプロジェクトを普通のCOMに書き直しました。と、自分で書いていて普通のCOMってなんぞや?と思ったので、単にVisualStudioのATLプロジェクト作成したdllと解釈していただきたく。
さて、書き直したといってもi/f部分を変えただけで中身のクラスライブラリはそのままコピーしたので大した手間はありません。
IEでActiveXオブジェクトを生成する場合、JavaScriptに”ActiveXObject”というfunctionが用意されており

var itunes = new ActiveXObject("iTunes.Application");

とかすると、iTunesWindowsCOMが呼び出せたりします。
Visutal Studio 2005で普通にALTライブラリを作成したら、IDispatchを継承したinterfaceを作ってくれました。あとはstdafx.hあたりで

#include <atlctl.h>

をして、クラスの方で

class ATL_NO_VTABLE CSwMediaDeviceManager :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSwMediaDeviceManager, &CLSID_SwMediaDeviceManager>,
public IDispatchImpl<ISwMediaDeviceManager, &IID_ISwMediaDeviceManager, &LIBID_SongWolfLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IObjectSafetyImpl<CSwMediaDeviceManager, INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>
{
public:
CSwMediaDeviceManager(){}
DECLARE_REGISTRY_RESOURCEID(IDR_SWMEDIADEVICEMANAGER)
BEGIN_COM_MAP(CSwMediaDeviceManager)
COM_INTERFACE_ENTRY(ISwMediaDeviceManager)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IObjectSafety)
END_COM_MAP()

として、
IObjectSafetyImplを継承して、IObjectSafetyのエントリを追加すれば、*.rgsで登録しているVersionIndependentProgIDの文字列でnew ActiveXObjectできます。

13
2007

内藤選手おめでとう

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

内藤x亀田大毅戦をテレビでみていろんなことを書こうと思いましたがあまりにも思うことが大杉なのでまとまらず、もう世間の声もすごいのであえて何も言うまい。と考えました。内藤選手もねちねち言ったらかわいそうって言ってるしね。
内藤選手の大人の対応により、少しだけボクシングがスポーツに戻った気がしました。

09
2007

近代史学習中

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

日本の文化も大事ですが歴史も大事なわけで。マンガ嫌韓流がどんなものか読みたいなぁと思いつつ古本屋でなかなか見あたらないし、買うまでには至らないのでマンガじゃない本を5,6冊読みました。
いろいろ読んでわかったこともあるんですが、史実を正しく理解するには当事者が残したものを読むのに限ると思います。というわけで「紫禁城の黄昏」を読んでみようかと思っています。
4396650329
4396650337
紫禁城の黄昏は他の出版社からも出版されていますが岩波文庫のは買ってはいけません。Amazonのレビューコメントを読めば一目瞭然と思います。右でも左でもその人の考え方なので自由だと思いますが、著者の許可も得ずに勝手に章を外して出版するなんて言語道断であります。

03
2007

ようやく国家の品格を読みました。前々から日本文学に手を出そうと思っていましたがこれを読むとますます学ばないといけない気がしました。
「リングで恩返しを」秋山28日復帰
http://www.sponichi.co.jp/battle/news/2007/10/02/01.html
さて、僕は秋山復帰はずっと反対だったのですが、いまいちそう判断する自分の根拠lがわからりませんでした。国家の品格を読んではっと気がつきました。秋山のやったことは「卑怯だから許せない」と。
表向きは秋山のルールの解釈が足らなかったということにされていますが(そんなことはないが)、仮にそうだったとしても、それがルール内だったとしても、やっぱり彼のやったことは許せないと思います。全身にクリームを塗りたくってレスリングがバックボーンの桜庭の攻撃を半減させて、自分は打撃攻撃に専念するなんて卑怯きわまりないことです。許すまじき行為です。
しかも秋山は当初桜庭の抗議に対して滑るのは多汗症だからという嘘をつきました。桜庭が試合中にタイムを要求したことに対して殴っている最中にタイムと言われて止まる選手はいないと言い、攻撃を続けました。
問題が発覚してから謝罪や反省を表明しましたが、それも問題が発覚したからそう言っているのではないかと取られても仕方がないと思います。国家の品格の中に「法律違反だから万引きしないという子供は誰も見ていなければ万引きするだろう」という記述がありましたがこれにすごく似ています。
大晦日のあと有志がすっごい滑るよ!というWikiサイトが立ち上げ秋山の問題を追及しました。一部で秋山が在日韓国人だから非難しているという声がありましたが、それはお門違いというもの。日本人は韓国と違い反韓教育がされていないし、彼が在日でなくてもこの騒動は起きていたと思います。やっぱり日本人には卑怯を憎むべしという精神が残っているのかなと感じました。
彼を復帰させるということはHEROSは武士道を捨てるのと同意な気がしています。まぁ、HEROSはスポーツでも格闘技でもなく、ただのショーだと言われればそれまでですが。。。

02
2007

冬のカラーコーディネータ検定試験の申し込みがいつの間にか始まっていたので申し込むことにしました。
http://www.kentei.org/color/mousikomi.html
しかし、何回やっても、何回やっても、申し込みページでエラーになります。
しかも

AM2:00?AM6:00はシステムメンテナンスのため休止します。

これ毎日ですよ。どんなシステムやねん!どうしたらこんなシステムになるの?