Piwik

PiwikというWebアクセス解析ツールがあります。
Piwik - Web analytics - Open source
トップページの情報によればphpMyVisitesの後継とのこと。

Note: piwik is the new version of phpMyVisites

こちらはDrupalのモジュール情報で知ったのですが、2種類のモジュールがあるようです。

両方ともPiwik用のトラッキングコード埋め込みと、DrupalからのPiwikレポート参照をサポートしているようです。

iBook G3でWLI-U2-KAMG54を使いたい

手元にBUFFALO製のUSB無線LANアダプタ「WLI-U2-KAMG54」があったので、Debian PowerPC(lenny)で使えないか調べましたが、ダメなようですね。

WLI-U2-KAMG54にはAtherosチップが使われています。
Atherosはmadwifi.org - Tracでサポートされるのですが、USBはサポートされていません。

About/MadWifi - madwifi.org - Tracより:

MadWifi supports PCI, MiniPCI and Cardbus devices, USB devices are not yet supported.

x86なマシンであればNdisWrapperを使ってWindows用のドライバで動かすことも可能かもしれませんが、PowerPC機には通用しません Sad

USBで使いたい方は他にもいらっしゃるらしく、

といったチケットもかなり昔に発行されています。

で、こちらのチケットの最後の書き込みを見ていますと、なんとOpenBSDではuathドライバでサポートされているとの記述が!

usbdevsのリストをみると、ATHEROS AR5523というものだけが対象のようです。

はたしてWLI-U2-KAMG54は該当するのでしょうか Puzzled
久々にOpenBSDをさわってみたくなりました Smiling

JavascriptでCSSのwidth値を動的に設定する

CMS Made Simpleのテンプレートで見かけたコードです。

<script type="text/JavaScript">
<!--
//pass min and max -measured against window width
function P7_MinMaxW(a,b){
	var nw="auto",w=document.documentElement.clientWidth;
	if(w>=b){nw=b+"px";}if(w<=a){nw=a+"px";}return nw;
}
//-->
</script>
<!--[if lte IE 6]>
<style type="text/css">
#pagewrapper {width:expression(P7_MinMaxW(720,950));}
#container {height: 1%;}
</style>
<![endif]-->

上記は"Top simple navigation + left subnavigation + 1 column"テンプレート中のコード。
テンプレートはインストール時にDBに入れるものなので、元ファイルは以下のSQLになります。
http://svn.cmsmadesimple.org/svn/cmsmadesimple/tags/version-1.4.1/install/schemas/initial.sql

ファイルシステムの空き領域をクリアする

SysinternalsのSDeleteというツールを使うと、ファイルシステムの空き領域をクリアすることができます(-zオプション)。

Usage: sdelete [-p passes] [-s] [-q] 
sdelete [-p passes] [-z|-c] [drive letter]
-c	Zero free space (good for virtual disk optimization).
-p passes	Specifies number of overwrite passes.
-s	Recurse subdirectories.
-q	Don't print errors (quiet).
-z	Cleanse free space.

Download SDelete (47 KB)

Linuxでも似たようなものがないかと思ってたら、Debian sidにはzerofreeというパッケージがありました(Ubuntuにもあるようです)。
Debian -- sid の zerofree パッケージに関する詳細

ext3-usersというメーリングリストでも話題に上がってるようなのですが、もともと配布元はどちらなのでしょう?
ext3 zerofree option and RedHat back port?

ZoneIdとかNTFS Streamとか

ダウンロードしたファイルの「ブロックの解除」で出てくる情報はどこに記録されてるんだっけか、といつも忘れるのでメモ。

XP SP2以降でダウンロードしたファイルにはZoneIdという仕組みを使って情報が付与される。
@IT:Windows TIPS -- Knowledge:XP SP2のZoneIdとは?
ちなみにFirefoxでダウンロードしても同じ情報は付与される。

このときの情報はNTFSのAlternate Streamを使って記録されており、ダウンロードしたファイル本体には記録されないので、ブロックの解除をおこなってもファイルサイズとかチェックサムは変わらない。

NTFSのStreamに関してはこちらの説明が一番わかりやすいかも。
8-3. NTFS のセキュリティ機能と落とし穴

Sysinternalsで配布しているStreamsを使うとコマンドラインで読み取ったり削除することができる。

2000とXPでは縮小表示の仕組みにNTFS Streamを使うかThumbs.dbを使うか、といった違いもあるらしい。
縮小表示を行うと NTFS で暗号化されたファイルが表示される

CATALINA_BASEを分けてTomcatを複数サービス化

Tomcatのバイナリ1個で、複数のインスタンスをサービス登録してみました。
インスタンス別にCATALINA_BASE配下ディレクトリ(conf,logs,temp,webapps,work)を分けて、Tomcatが使うポート番号も変えてあげれば、バイナリは共通のまま複数インスタンス化することができます。

設定項目 デフォルト インスタンス1 インスタンス2
サービス名 Tomcat6 Tomcat6Instance1 Tomcat6Instance2
JAVA_HOME C:\Program Files\Java\jdk1.6.0_07
CATALINA_HOME C:\apache\tomcat-6.0.18
CATALINA_BASE C:\apache\tomcat-6.0.18 C:\apache\tomcat-instance1 C:\apache\tomcat-instance2
Server Componentの
port番号
8005 18005 28005
HTTP Connectorの
port番号
8080 18080 28080
AJP Connectorの
port番号
8009 18009 28009

まずは以下の手順で各種ディレクトリと設定ファイルを準備。

  • apache-tomcat-6.0.18.zipを入手し、C:\apache\tomcat-6.0.18に展開
  • C:\apache\tomcat-instance1を作成し、C:\apache\tomcat-6.0.18からconf,logs,temp,webapps,workディレクトリをコピー
  • C:\apache\tomcat-instance1\conf\server.xmlのポート番号を変更
  • C:\apache\tomcat-instance2も同様に作成

デイレクトリと設定ファイルが準備できたら、service.batコマンドで登録。

C:\apache\tomcat-6.0.18\bin>set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_07"
C:\apache\tomcat-6.0.18\bin>set CATALINA_BASE=C:\apache\tomcat-instance1
C:\apache\tomcat-6.0.18\bin>service.bat install Tomcat6Instance1
Installing the service 'Tomcat6Instance1' ...
Using CATALINA_HOME:    C:\apache\tomcat-6.0.18
Using CATALINA_BASE:    C:\apache\tomcat-instance1
Using JAVA_HOME:        "C:\Program Files\Java\jdk1.6.0_07"
Using JVM:              auto
The service 'Tomcat6Instance1' has been installed.

CATALINA_BASE環境変数を変えて、2個めのインスタンスも同様に登録します。

C:\apache\tomcat-6.0.18\bin>set CATALINA_BASE=C:\apache\tomcat-instance2
C:\apache\tomcat-6.0.18\bin>service.bat install Tomcat6Instance2
Installing the service 'Tomcat6Instance2' ...
Using CATALINA_HOME:    C:\apache\tomcat-6.0.18
Using CATALINA_BASE:    C:\apache\tomcat-Instance2
Using JAVA_HOME:        "C:\Program Files\Java\jdk1.6.0_07"
Using JVM:              auto
The service 'Tomcat6Instance2' has been installed.

今回は簡単に済ませるためにservice.batコマンドを使いましたが、tomcat6w.exeを使うともっと細かいパラメータを指定して登録することができます。登録したサービスの設定変更をおこなうことも可能です。
詳しくはApache Tomcat 6.0 - Windows service HOW-TOをご覧ください。

Eclipse 3.4にRadRailsプラグインを入れる

素人には一筋縄ではいきませんでしたので覚書。
Plugging Aptana into an existing Eclipse configuration - AptanaによるとEclipse SDKじゃないと動かないとある。
Eclipse 3.4は"Eclipse IDE for Java EE Developers"を使っていたが、そのままだとEclipse SDKは入っていないのでそちらのインストールから開始。

  1. Help->Software Updates...メニューでAvailable Softwareタブから、Eclipse Project Update Siteの"Eclipse SDK"を選択してインストール
  2. Eclipseリスタート後、Windows->Preferencesメニューで、General->Capabilitiesで"Classic Update"にチェックを入れる
  3. Helpメニューに昔ながらのSoftware Updatesメニューが出現しますので、以下のサイトを追加してインストール
    • http://update.aptana.com/install/3.2/ (Aptanaプラグイン)
    • http://update.aptana.com/update/rails/3.2/ (RadRailsプラグイン)
    • http://update.aptana.com/update/rdt/3.2/ (RDTプラグイン)

CentOS 5でのnetconsole利用

Linuxカーネル2.6からコンソールメッセージをsyslog転送するためのnetconsoleという機能が提供されています。
シリアルコンソールが使えない場合や、データセンターに設置してあるサーバのコンソールメッセージを確認したり記録するのに便利かもしれません。

CentOS 5では

  • netconsole rcスクリプトを有効化する
  • /etc/sysconfig/netconsoleに転送先syslogホストのIPアドレスを記述する

だけで使えるようになってます。

netconsole rcスクリプトの有効化は以下です。追加パッケージのインストールなどは不要です。

# chkconfig netconsole on

/etc/sysconfig/netconsoleにはSYSLOGADDR=でsyslogホストのIPアドレスを指定します。
以下はIPアドレス192.168.0.1のsyslogホストに転送する場合の記述例です。

SYSLOGADDR=192.168.0.1

転送先syslogホストの準備が完了しているなら、あとはリブートもしくはservice netconsole startをおこなえばOK。

参考:
Linux Configure Netconsole To Log Messages Over UDP Network

rpmsave, rpmnew, rpmorigファイル

rpmコマンドを使ってパッケージのアップグレードをおこなうと、rpmorig, rpmsaveやrpmnewといったサフィックスのファイルができる。

rpmsaveとrpmnewはパッケージ管理下に属しているファイルをユーザが変更している場合に作られるもの。

rpmsaveファイルは、ユーザが変更していた設定ファイルをパッケージで上書きする前に、バックアップされたもの。
また、設定ファイルを残したままパッケージを削除する場合もrpmsaveとして保存される。

同じく上書きの場合であっても、パッケージの設定オプションで%config(noreplace)が指定されていると、パッケージの設定ファイルのほうをrpmnewファイルとしてインストールしてくれる、という違いになるようだ。

残るrpmorigのファイルは、パッケージで上書きする設定ファイルが、どのパッケージにも属していなかった場合にリネーム退避されたもの。

んー。微妙にいいまわしが間違ってるかも。

参考:
Re: rpmorig/rpmnew
RPM Guide >> 3.2.2.2. Smart Upgrades

Emacsのガベッジコレクション閾値

EmacsのLisp処理にもガベッジコレクションという考えがありまして、その閾値はデフォルトで400,000バイトという値になっています。
この値を大きくすると、GCの頻度が減って、実行速度が向上する場合があります。増やしすぎても良くないとは思いますが。

とりあえず私は4MBの設定になるよう、以下を.emacs.elに書いてます。

(setq gc-cons-threshold 4194304)

参考:
Garbage Collection - GNU Emacs Lisp Reference Manual