portupgrade するときに ProFTPD にパッチを当てる

  FreeBSD の ProFTPD が 1.3.1_2 にアップデートされていたので、portupgrade でアップデートするためのメモ。

  ProFTPD は 1.2.10 あたりから NLST のサポートをやめました。
  そのため、FFFTP ではデフォルトの設定ではファイルの一覧が取得できなくなりました。

  そこで、ProFTPD NLST パッチ を当てて、portupgrade します。

- ProFTPD NLST パッチ
  http://www.hayasoft.com/haya/linux/proftpd_nlst_patch.html

# cd /usr/ports/distfiles
# wget http://www.hayasoft.com/haya/linux/proftpd-nlst-patch/proftpd-1.3.1-nlst-f ...
# vi /usr/ports/ftp/proftpd/Makefile.local

PATCHFILES += proftpd-1.3.1-nlst-ffftp.patch
PATCH_DIST_STRIP = -p1
NO_CHECKSUM = yes

# portupgrade proftpd

  または、すでにアップデートした後ならば

# portupgrade -rf proftpd

- ref.: FreeBSD の qmail ports にエレガントにパッチ適用
  http://www.pochi.cc/~sasaki/chalow/2005-06-03-2.html

Vim をタスクトレイから起動する VimTray をリリースしました

  VimTray という Vim をタスクトレイから起動する Windows アプリケーションを作ってみました。
  実は、8 月くらいにすでに作り終わっていたのですが、バグが残っていたのでアナウンスしていませんでした。
  今日突然直したくなったので直して、アナウンスすることにします。

  VimTray は、タスクトレイに駐屯して Vim を起動するという単純なことしかできません。

  VimTray

  アイコンをダブルクリックすると Vim が開きます。右クリックすると上記のようなメニューが表示されます。

  ちょっと変わった機能として、mru.vim という、いわゆる最近使ったファイルを管理するプラグインを使うと、上記のようにメニューに最近使ったファイルがリストされます。

  あと、Vim 7.0 以上を使っている場合は、ファイルをタブで開くようにすることもできます。

  VimTray

  VimTray は Google Code の Project Hosting で配布しています。
  ライセンスは、修正 BSD ライセンスです。

- vimtray - Google Code
  http://code.google.com/p/vimtray/

  バイナリのダウンロードやソースのダウンロードも上記 Google Code Project Hosting からお願いします。

  Windows 環境で Vim を利用している方は、是非お試しください。

  なお、Project Hosting は Subversion が使えるので svn でソースをチェックアウトすることができます。
  最新版を取得するには、http://vimtray.googlecode.com/svn/trunk/ をチェックアウトしてください。

$ svn checkout http://vimtray.googlecode.com/svn/trunk/ vimtray

  開発言語は、あまり慣れていない Delphi 7 で、Windows XP (SP2) 上でコンパイルしています。

XAMPP に含まれる Apache,MySQL,PHP のバージョンの遷移

  今年もまた約一年ぶりに調査。もはやこの情報が役に立つかどうかは不明ですが……

XAMPP      リリース日 Apache 2.x MySQL 4.x MySQL 5.x PHP 4.x    PHP 5.x
0.9        2003-07-22 2.0.47      4.0.14                4.3.3 rc2
1.0        2003-09-03 2.0.47      4.0.14                4.3.3     
1.1        2003-10-13 2.0.47      4.0.16                4.3.3     
1.2        2003-11-04 2.0.48      4.0.16                4.3.4     
1.3        2004-02-10 2.0.49      4.0.18                4.3.6     
1.4        2004-03-25 2.0.49      4.0.18                4.3.4     
1.4.2      2004-04-06 2.0.49      4.0.18                4.3.6     
1.4.3      2004-06-12 2.0.49      4.0.20a               4.3.7     
1.4.4      2004-07-03 2.0.50      4.0.20                4.3.7     
1.4.5      2004-07-14 2.0.50      4.0.20                4.3.8      5.0.0
1.4.6      2004-08-16 2.0.50      4.0.20                4.3.8      5.0.1
1.4.7      2004-09-18 2.0.51      4.0.21                4.3.8      5.0.1
1.4.8      2004-09-25 2.0.51      4.0.21                4.3.9      5.0.2
1.4.9      2004-10-02 2.0.52      4.0.21                4.3.9      5.0.2
1.4.10     2004-12-05 2.0.52      4.1.7                 4.3.9      5.0.2
1.4.11     2004-12-25 2.0.52      4.1.8                 4.3.10     5.0.3
1.4.12     2005-02-20 2.0.53      4.1.9                 4.3.10     5.0.3
1.4.13     2005-04-10 2.0.54      4.1.11                4.3.11     5.0.4
1.4.14     2005-06-19 2.0.54      4.1.12                4.3.11     5.0.4
1.4.15     2005-08-14 2.0.54      4.1.13                4.4.0      5.0.4
1.4.16     2005-10-03 2.0.54      4.1.14                4.4.0      5.0.5
1.5.0      2005-11-06 2.0.55                 5.0.15     4.4.1      5.0.5
1.5.0-pl1 2006-01-08 2.0.55                 5.0.15     4.4.1-pl1 5.0.5
1.5.1      2006-01-08 2.2.0                  5.0.18     4.4.1-pl1 5.1.1
1.5.2      2006-04-26 2.2.0                  5.0.20     4.4.2-pl1 5.1.2
1.5.3      2006-05-28 2.2.2                  5.0.21     4.4.2-pl1 5.1.4
1.5.4      2006-09-10 2.2.3                  5.0.24a    4.4.4      5.1.6
1.5.4a     2006-10-04 2.2.3                  5.0.24a    4.4.4      5.1.6
1.5.5      2006-11-26 2.2.3                  5.0.27     4.4.4      5.2.0
1.6.0      2007-02-18 2.2.4                  5.0.33     4.4.5      5.2.1
1.6.0a     2007-02-21 2.2.4                  5.0.33     4.4.5      5.2.1
1.6.1      2007-04-17 2.2.4                  5.0.37     4.4.6      5.2.1
1.6.2      2007-05-28 2.2.4                  5.0.41     4.4.7      5.2.2
1.6.3      2007-07-22 2.2.4                  5.0.45     4.4.7      5.2.3
1.6.3a     2007-07-26 2.2.4                  5.0.45     4.4.7      5.2.3
1.6.4      2007-10-07 2.2.6                  5.0.45     4.4.7      5.2.4
                                                                    
最新版                 2.2.6       4.1.22     5.0.45     4.4.7      5.2.4


  最新版は,2007-11-04 での各プロダクトの最新バージョン.
  調査対象は XAMPP for Windows.

- XAMPP
  http://sourceforge.net/projects/xampp/
  http://www.apachefriends.org/en/xampp.html

PEAR::Pager で生成されるリンクを並び替える方法

- ウノウラボ Unoh Labs: PEAR::Pagerで生成されるリンクを並び替える
  http://labs.unoh.net/2007/11/pearpager.html

  上記エントリで、PEAR::Pager で生成されるリンクを並び替えるために Pager_Common クラスの Build() メソッドを書き換える方法が紹介されていました。
  そこで、ここでは Build メソッドを書き換えずに、getLinks() メソッドを利用して、リンクを並び替える (任意の項目を任意の順序で表示する) 方法を紹介します。

  上記エントリのように以下の順序で出力する方法です。

前のページ [最初のページ] n ~ m 番目のページ [最後のページ] 次のページ

require_once 'Pager/Pager.php';

$params = array(
    'mode' => 'sliding',
    'delta' => 5,
    'perPage' => 5,
    'prevImg' => '<<',
    'nextImg' => '>>',
    'totalItems' => 1000,
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1,
);

$pager =& Pager::factory($params);
$links = $pager->getLinks();
if ($links['pages'] != '') {
    echo $links['back'], ' ', $links['first'], $links['pages'], $links['last'], ' ', $links['next'];
}


  このようにすることで、以下のような出力が得られます。

  PEAR::Pager

  getLinks() メソッドの戻り値を利用して、任意の順序で出力するだけです。

  getLinks() メソッドは以下のような連想配列を返します。

back      前のページへのリンク
pages     n ~ m 番目のページへのリンク ($pager->links と同じ)
next      次のページへのリンク
first     最初のページへのリンク
last      最後のページへのリンク
linktags サイトナビゲーション用のリンク (参考)


  linktags は以下のようなものが返されます。

<link rel="first" href="./pager.php?pageID=1" title="first page" />
<link rel="previous" href="./pager.php?pageID=7" title="previous page" />
<link rel="next" href="./pager.php?pageID=9" title="next page" />
<link rel="last" href="./pager.php?pageID=200" title="last page" />


  このように getLinks() メソッドの戻り値をうまく使えば、任意の項目を任意の順序で表示することができます。

  ちなみに私が好んで指定するオプションは以下のようなものです。最初/最後のページへのリンクは表示しないことも多いです。

require_once 'Pager/Pager.php';

$params = array(
    'mode' => 'sliding',
    'perPage' => 20,
    'delta' => 5,
    'urlVar' => 'p',
    'separator' => ' |',
    'curPageSpanPre' => '',
    'curPageSpanPost' => '',
    'prevImg' => '&lt;前の20件',
    'nextImg' => '次の20件&gt;',
    'firstPageText' => '最初',
    'firstPagePre' => '[',
    'firstPagePost' => ']',
    'lastPageText' => '最後',
    'lastPagePre' => '[',
    'lastPagePost' => ']',
    'spacesBeforeSeparator' => 0,
    'spacesAfterSeparator' => 1,
    'totalItems' => 1000,
    'altFirst' => '最初のページへ移動',
    'altPrev' => '前のページへ移動',
    'altNext' => '次のページへ移動',
    'altLast' => '最後のページへ移動',
    'altPage' => 'ページ',
);

$pager =& Pager::factory($params);
$links = $pager->getLinks();
if ($links['pages'] != '') {
    echo $links['first'], $links['back'], ' | ', $links['pages'], ' | ', $links['next'], ' ', $links['last'];
}


  出力は次のようになります。

PEAR::Pager