Highslide JS で簡単にサムネイル画像ポップアップ

 
Highslide JS
 
近頃は汎用的で高機能な Ajax JavaScript ライブラリが充実してきましたが、ただサムネイル拡大表示をスマートに行いたい、という時はこちらのほうがこれを使うのがよさそうです。
一番単純な例は次のようなものです。

<!– ヘッダで定義しておく –>
<script type=”text/javascript” src=”my-highslide-dir/highslide.js”></script>
<!– 実際にサムネイル表示する –>
<a href=”拡大画像のURL” class=”highslide” onclick=”return hs.expand(this)”>
    <img src=”サムネイル画像のURL” />
</a>

JavaScript 非対応の時はただ拡大画像へのリンクになるあたりがスマートです。
画像のポップアップだけではなく、ポップアップ画像に任意の説明を付与も比較的簡単にでき、機能面でも素晴らしいですね。
 
参考サイトを参照すると詳しい使い方や利用例があります。
 
参考:
Highslide JS でサムネイル画像を拡大表示する(小粋空間)
Highslide JS のサンプルページ(caramel-tea.com)

JSEclipse 導入でエラー

JavaScript 用 Eclipse プラグインは JSEclipse がよさそう、ということで
Eclipse 3.3.1 に JSEclipse 1.5.3 を下の更新サイト

http://www.interaktonline.com/

からいれてみたのですが、Eclipse を再起動して早速 *.js ファイルを開いてみたところ、次のようなエラーが…

Error opening the editor

 
とりあえず ソフトウェア更新→構成の管理→JSEclipse 1.5.3を選択し、更新をスキャンしてみたところ、Adobe Labs に JSEclipse 1.5.5 があるよ、と言われたのでそれをインストールし、無事動作しました。
最初から Adobe Labs からインストールすればよかったのですね。
 
Update site: Adobe Labs

http://download.macromedia.com/pub/labs/jseclipse/autoinstall/

 
ちなみに、InterAKT と Adobe の関係については FAQを参照するとわかるのですが、InterAKT が Adobe に買収され、その結果 JSEclipse を含む一部の製品が Adobe Labs に移ったようです。

PostgreSQL で使える全文検索エンジン

Ludia
wiki: http://ludia.sourceforge.jp/moin.cgi/#id9
 
内部で Senna と MeCab が使われています。
 
PostgreSQL に Ludia をインストールすると、Senna の構文での文字列検索を行える @@ 演算子等、全文検索用の機能が追加されます。

SELECT content FROM fooTable WHERE content @@ ‘今日は+です’

結果:

| content |
| 今日はくもりです |
| 今日はいい天気ですね。|

PHP4 と PHP5 の Sigleton Pattern

PHP4 での Singleton

error_reporting(E_ALL);
class Foo {
    function &getInstance(){
        static $_singleton;
        if(empty($_singleton)){
            $_singleton = new Foo();
        }
        return $_singleton;
    }
    var $_n;
    function add(){
        echo (++$_n).”\n”;
    }
}
$o1 =& Foo::getInstance();
$o1->add(); // 1
$o2 =& Foo::getInstance();
$o1->add(); // 2
$o2->add(); // 3
$o1->add(); // 4

 & と static の使い方が肝です。
static キーワードは、指定したローカル変数のライフサイクルを延長するためのキーワードです(注1)。
 メソッド定義とメソッド呼び出しの両方に & を付けないと、参照でなくコピーになってしまい、個別のインスタンスになるために結果が 1,2,1,3 になってしまいます。
 
PHP5 の場合も上のコードを変更なしで Singleton Pattern として動作させることが可能です。
さらに、メソッドの戻り値が標準で参照になるため、& を外しても singleton を実現することができ、クライアントコードが誤用する可能性がなくなったといえます(注2)。
 
このように PHP4 ではクライアントに特殊なメソッド呼び出し方をしないと意図しない結果になるため、Singleton な動作が必要な箇所については極力非公開にして内部利用にとどめるほうが賢明かも、です。
 
注1:
static キーワードには、スコープ(可用範囲)を広げる効果はありません。
ローカル変数がフィールドになるわけではないため、異なるメソッドで同じ名前の変数を指定しても、別個の変数になります。
注2:
ただし、クライアントコードで

$o1 = clone Foo::getInstance();

のように clone を使って意図的にコピーを行った場合、PHP4 で & を付けなかったときと同様の結果になります。
この場合はクライアント側で結果が予測できるため、問題にはならないでしょう。
 
参考:
– PHP4 でデザインパターン(Do You PHP?)

Eclipse で SVN 利用時 JavaHL にすると強制終了する時のトラブルシューティング

Eclipse 3.3, Subversive または Subclipse を利用し、Apache2.2 用 Subversion 1.4.5 をインストールした環境でローカルで使っていたところ、SVN リポジトリへのアクセスが発生すると、黙って Eclipse が落ちる、という現象が発生しました。プライマリなパースペクティブが SVN リポジトリにアクセスするものだと Eclipse が全く起動しなくなったり…
 
調べてみたところ、結論として、パスが通る場所(PATH で指定されている場所)に libapr-1.dll があり、libapr-1.dll と eclipse/plugin/*javahl* にある libjavahl-1.dll の(Apache の)バージョンが異なる場合に JavaHL を呼び出した瞬間に Eclipse が落ちるようです。
 
以下のいずれかの方法で対策できます。
(A) Subversion をアンインストールするか、PATH から <Subversion ホームディレクトリ>/bin を外す
(B) Apache2.2 用でなく Apache 2.0 用 Subversion (1.4.x) をインストールする
(C) plugin/*javahl*_X.X.X にあるすべての DLL を、使いたい Subversion の DLL にまるごと置き換える
(D) JavaHL でなく SVNKit など PureJava 実装の SVN コネクタを使う。
 
C の案を採用する場合、Subversive なら

eclipse\plugins\org.polarion.team.svn.client.javahl_1.1.*

Subclipse なら

eclipse\plugins\org.tigris.subversion.javahl.win32_1.2.*

に、それぞれのプラグインで使われている JavaHL の DLL があります。
 
また、置き換える DLL は Subversion ダウンロードページからダウンロードした svn-win32-1.4.*_javahl.zip の中の

javahl/libsvnjavahl-1.dll
bin/*.dll

です。
 
追記:
– 2007-10-26: (C)の案でSubversive についてのみ書いていましたが、本日 Subclipse にして再発したため、再調査の上加筆修正しました。
 
参考:
久しぶりにJavaHL(気の向くままに…)

Windows で SVN – 環境準備から Web 公開、利用までの手順

OS: Windows XP SP2
サーバ環境: Apache 2.2.6 + Subversion 1.4.5 + TortoiseSVN 1.4.5
クライアント環境: Eclipse 3.3 + Subclipse 1.2.x
 
という構成で、SVN 環境を構築したのでその手順を残しておきます。
参考にしたサイトについては後述。
 
– Apache 2.2 をダウンロード、インストール
  詳細は省略
– Subversion インストール
  Apache 2.2 用 zip 版(svn-win32-*.zip)をダウンロード(インストーラが必要なら Apache 2.0 用 exe 版(svn-*-setup.exe)をインストール後、zip 版を上書きする)
 コマンドラインから利用するため、 Subversion インストールフォルダの bin にパスを通しておく。
 
– コマンドラインで SVN リポジトリ作成
引用: http://terai.xrea.jp/Subversion/Apache2.html#uc9cfee4

mkdir c:\svn
svnadmin create c:\svn\hoge
svn mkdir file://localhost/c:/svn/hoge/trunk -m “mkdir trunk”
svn mkdir file://localhost/c:/svn/hoge/tags -m “mkdir tags”
svn mkdir file://localhost/c:/svn/hoge/branches -m “mkdir branches”

– Apache の httpd.conf で SVN リポジトリが見られるように設定
以下の行がコメントアウトされていれば、コメントアウトをはずして有効にします。

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

以下の行がなければ、LoadModule の最後に追加します。

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

最後に、以下のように、Location や VirtualHost タグで DAV, SVNParentPath を設定します。

<Location /svn>
  DAV svn
  SVNParentPath “c:/svn”
</Location>

これで、Apache を再起動すればブラウザで

http://localhost/svn/hoge

とアクセスして接続を確認することができます。
 
– TortoiseSVN インストール
 これは任意。インストールするとエクスプローラで右クリックでSVNリポジトリが作成できるようになります。
 http://tortoisesvn.net/downloads から、自分の環境用の msi をダウンロード
 インストールし、マシンを再起動したあとに同ページの下にある Language Packs の Japanese をダウンロードして実行すると、設定から日本語が選択できるようになります。
設定方法は、エクスプローラを開いて適当な場所で右クリック→ TortoiseSVN → Settings → General の Language を日本語して OK 、です。
 
 
– Eclipse 3.3 インストール
 詳細は省略。
 
– Subclipse インストール
 Eclipse のインストール/更新メニューで新規リモートサイトとして

http://subclipse.tigris.org/update_1.2.x

を指定すればインストールできます。
 
– Elicpse で SVN 対応
SVN リポジトリーエクスプローラーを開き、SVN リポジトリビューで右クリック、新規→リポジトリーロケーションで以下のように入力します。

http://localhost/svn/hoge

パッケージエクスプローラで既存のプロジェクトを右クリック→チーム→プロジェクト共用→SVN
で、あとはそのままウィザードを進めれば SVN を利用することができます。
 
参考:
Apache2 で Subversion をネットワークに対応(てんぷらメモ)
 SVN リポジトリの作成と Apache での公開手順。
Subversion を Windows で GUI 中心に使う(Landscape – エンジニアのメモ)
 Subversion + TortoiseSVN の導入手順。

Google – 検索ワードのはやりを見る Google Trends

Google Trends
 
流行語関係で検索してみると、こんな感じになります。脈絡ない検索してますが、あくまで例として。
 
上の時系列グラフでいつ多く利用された言葉なのかがわかるようになっています。
下には各国の検索結果が表示されていて、国、地域ごとの違いも比較できます。
 
center と centre の利用状況
 
もちろん1つの単語だけでも検索できます。
 
ライブドア

Eclipse でマウスジェスチャ(Windows)

プラグインで全てのエディタでマウスジェスチャを有効にするというのは現状無理らしいので、フリーソフトのマウ筋で以下の設定をして Eclipse でマウスジェスチャを実現させてみました。
 
MauSuji.ini:
(Target, Action のみ抜粋。既存の設定がある場合要調整)

[Target]
Number_0=1
Succession_0=0
HookType_0=1
WheelRedirect_0=0
FileName0=”eclipse.exe”
 
[Action]
TargetNumber0=1
Gesture0=3
Gesture0_0=12
Gesture0_1=14
Comment0=”エディタを閉じる”
Case0_0=10
CommandTarget0_0=0
Wait0_0=0
Key0_0=599
TargetNumber1=1
Gesture1=3
Gesture1_0=11
Gesture1_1=14
Comment1=”右のタブに移動”
Case1_0=10
CommandTarget1_0=0
Wait1_0=0
Key1_0=546
TargetNumber2=1
Gesture2=3
Gesture2_0=11
Gesture2_1=13
Comment2=”左のタブに移動”
Case2_0=10
CommandTarget2_0=0
Wait2_0=0
Key2_0=545
Comment3=”ファイル新規作成”
Case3_0=10
CommandTarget3_0=0
Wait3_0=0
Key3_0=590

 
とりあえず Firefox の All in one gesture にならい、
 
– 右ドラッグしながら↑→ – タブを右に移動
– 右ドラッグしながら↑← – タブを左に移動
– 右ドラッグしながら↑ – ファイル新規作成(タブ作成)
– 右ドラッグしながら↓→ – 現在のタブのファイルを閉じる
 
としてみました。
デフォルトの設定のままだと右クリックでコンテキストメニューを開く時に一瞬ジェスチャモードに入ってもたつき感があったため、設定→マウス感度の設定→タイムアウトを短くし、150ミリ秒くらいにしました。
 
参考:
Eclipseでマウスジェスチャー

Plugin – 言語パックが出ていないバージョンを日本語化する / 他機能ファイル検索

 
Pleiades
EclipseWiki の説明ページ
このプラグインを適用すると、公式 Language Package が出ていない Eclipse 3.3 を日本語化することができます。
 
– GotoFile Eclipse Plugin
EclipseWiki の説明ページ
このプラグインを適用すると、編集メニューに「クイック検索(Ctrl+Alt+N)」の機能が追加され、頭文字だけのキャメルケース検索や、曖昧検索ができるようになります。
思ったほどもたつきも感じませんし、標準のファイル検索機能(Ctrl+Alt+R, Ctrl+Shift+R)よりもだいぶ便利です。
GotoFile update site:

http://www.muermann.org/gotofile/update

 
2007-10-09 現在、GotoFile Plugin をインストールする時に「この環境に適当でないフィーチャーを無視する」にチェックが入っていると、対応バージョンを検出してくれませんでしたが、チェックを外してインストールしても問題なく動作します。

PuTTY でデフォルト設定を変更する

度忘れしていたのでメモ。
 
引数なしで putty.exe を起動し、設定を変更後に
“セッション” カテゴリを選択し、 “保存されたセッション”の欄で Default Settings を選択して保存ボタンでOK。
 
端末のプライベートキーファイルを設定するには、
“接続” -> “SSH” -> “認証” カテゴリを選択し、”認証パラメータ”の欄で認証のためのプライベートキーファイルに(puttygen.exe で作成した) *.pty ファイルを設定すればよい。
 
OpenSSH の ssh-keygen で作成した秘密鍵を putty でも使いたい場合は puttygen で Load ボタンでssh-keygen で作成した秘密鍵(id-dsa や id-rsa)を選択後 Save private key ボタンで .pty 形式に変換できる。
鍵の内容は同じなので、publick key は両方の秘密鍵で共通。